Example usage for org.joda.time.format DateTimeFormatterBuilder appendTwoDigitYear

List of usage examples for org.joda.time.format DateTimeFormatterBuilder appendTwoDigitYear

Introduction

In this page you can find the example usage for org.joda.time.format DateTimeFormatterBuilder appendTwoDigitYear.

Prototype

public DateTimeFormatterBuilder appendTwoDigitYear(int pivot) 

Source Link

Document

Instructs the printer to emit a numeric year field which always prints and parses two digits.

Usage

From source file:com.facebook.presto.teradata.functions.dateformat.DateFormatParser.java

License:Apache License

public static DateTimeFormatter createDateTimeFormatter(String format) {
    DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
    for (Token token : tokenize(format)) {
        switch (token.getType()) {
        case DateFormat.TEXT:
            builder.appendLiteral(token.getText());
            break;
        case DateFormat.DD:
            builder.appendDayOfMonth(2);
            break;
        case DateFormat.HH24:
            builder.appendHourOfDay(2);//  w  ww  .  jav  a2s.  c  o  m
            break;
        case DateFormat.HH:
            builder.appendHourOfHalfday(2);
            break;
        case DateFormat.MI:
            builder.appendMinuteOfHour(2);
            break;
        case DateFormat.MM:
            builder.appendMonthOfYear(2);
            break;
        case DateFormat.SS:
            builder.appendSecondOfMinute(2);
            break;
        case DateFormat.YY:
            builder.appendTwoDigitYear(2050);
            break;
        case DateFormat.YYYY:
            builder.appendYear(4, 4);
            break;
        case DateFormat.UNRECOGNIZED:
        default:
            throw new PrestoException(StandardErrorCode.INVALID_FUNCTION_ARGUMENT,
                    String.format("Failed to tokenize string [%s] at offset [%d]", token.getText(),
                            token.getCharPositionInLine()));
        }
    }

    try {
        return builder.toFormatter();
    } catch (UnsupportedOperationException e) {
        throw new PrestoException(INVALID_FUNCTION_ARGUMENT, e);
    }
}

From source file:io.prestosql.operator.scalar.DateTimeFunctions.java

License:Apache License

@SuppressWarnings("fallthrough")
public static DateTimeFormatter createDateTimeFormatter(Slice format) {
    DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();

    String formatString = format.toStringUtf8();
    boolean escaped = false;
    for (int i = 0; i < format.length(); i++) {
        char character = formatString.charAt(i);

        if (escaped) {
            switch (character) {
            case 'a': // %a Abbreviated weekday name (Sun..Sat)
                builder.appendDayOfWeekShortText();
                break;
            case 'b': // %b Abbreviated month name (Jan..Dec)
                builder.appendMonthOfYearShortText();
                break;
            case 'c': // %c Month, numeric (0..12)
                builder.appendMonthOfYear(1);
                break;
            case 'd': // %d Day of the month, numeric (00..31)
                builder.appendDayOfMonth(2);
                break;
            case 'e': // %e Day of the month, numeric (0..31)
                builder.appendDayOfMonth(1);
                break;
            case 'f': // %f Microseconds (000000..999999)
                builder.appendFractionOfSecond(6, 9);
                break;
            case 'H': // %H Hour (00..23)
                builder.appendHourOfDay(2);
                break;
            case 'h': // %h Hour (01..12)
            case 'I': // %I Hour (01..12)
                builder.appendClockhourOfHalfday(2);
                break;
            case 'i': // %i Minutes, numeric (00..59)
                builder.appendMinuteOfHour(2);
                break;
            case 'j': // %j Day of year (001..366)
                builder.appendDayOfYear(3);
                break;
            case 'k': // %k Hour (0..23)
                builder.appendHourOfDay(1);
                break;
            case 'l': // %l Hour (1..12)
                builder.appendClockhourOfHalfday(1);
                break;
            case 'M': // %M Month name (January..December)
                builder.appendMonthOfYearText();
                break;
            case 'm': // %m Month, numeric (00..12)
                builder.appendMonthOfYear(2);
                break;
            case 'p': // %p AM or PM
                builder.appendHalfdayOfDayText();
                break;
            case 'r': // %r Time, 12-hour (hh:mm:ss followed by AM or PM)
                builder.appendClockhourOfHalfday(2).appendLiteral(':').appendMinuteOfHour(2).appendLiteral(':')
                        .appendSecondOfMinute(2).appendLiteral(' ').appendHalfdayOfDayText();
                break;
            case 'S': // %S Seconds (00..59)
            case 's': // %s Seconds (00..59)
                builder.appendSecondOfMinute(2);
                break;
            case 'T': // %T Time, 24-hour (hh:mm:ss)
                builder.appendHourOfDay(2).appendLiteral(':').appendMinuteOfHour(2).appendLiteral(':')
                        .appendSecondOfMinute(2);
                break;
            case 'v': // %v Week (01..53), where Monday is the first day of the week; used with %x
                builder.appendWeekOfWeekyear(2);
                break;
            case 'x': // %x Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v
                builder.appendWeekyear(4, 4);
                break;
            case 'W': // %W Weekday name (Sunday..Saturday)
                builder.appendDayOfWeekText();
                break;
            case 'Y': // %Y Year, numeric, four digits
                builder.appendYear(4, 4);
                break;
            case 'y': // %y Year, numeric (two digits)
                builder.appendTwoDigitYear(PIVOT_YEAR);
                break;
            case 'w': // %w Day of the week (0=Sunday..6=Saturday)
            case 'U': // %U Week (00..53), where Sunday is the first day of the week
            case 'u': // %u Week (00..53), where Monday is the first day of the week
            case 'V': // %V Week (01..53), where Sunday is the first day of the week; used with %X
            case 'X': // %X Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V
            case 'D': // %D Day of the month with English suffix (0th, 1st, 2nd, 3rd, )
                throw new PrestoException(INVALID_FUNCTION_ARGUMENT,
                        String.format("%%%s not supported in date format string", character));
            case '%': // %% A literal %? character
                builder.appendLiteral('%');
                break;
            default: // %<x> The literal character represented by <x>
                builder.appendLiteral(character);
                break;
            }//from   w  w  w.j a  v  a  2  s  .  c om
            escaped = false;
        } else if (character == '%') {
            escaped = true;
        } else {
            builder.appendLiteral(character);
        }
    }

    try {
        return builder.toFormatter();
    } catch (UnsupportedOperationException e) {
        throw new PrestoException(INVALID_FUNCTION_ARGUMENT, e);
    }
}