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

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

Introduction

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

Prototype

public DateTimeFormatterBuilder() 

Source Link

Document

Creates a DateTimeFormatterBuilder.

Usage

From source file:com.inbravo.scribe.rest.service.crm.CRMMessageFormatUtils.java

License:Open Source License

/**
 * /* w w  w . j av a2 s .  c o m*/
 * @param finishDate
 * @return
 * @throws Exception
 */
public static final DateTime validateInputDate(final String date, final String permittedDateFormats)
        throws Exception {

    logger.debug(
            "----Inside validateInputDate, date: " + date + " & permittedDateFormats: " + permittedDateFormats);

    /* Seperate all the formats */
    final String[] defaultDateFormats = permittedDateFormats.split(",");

    /* Create array for all date parsing formats */
    final DateTimeParser[] dateTimeParser = new DateTimeParser[defaultDateFormats.length];

    /* Parse with individual formats */
    for (int i = 0; i < defaultDateFormats.length; i++) {

        /* If format is valid */
        if (defaultDateFormats[i] != null && !"".equals(defaultDateFormats[i])) {

            /* Create new parser for each format */
            dateTimeParser[i] = DateTimeFormat.forPattern(defaultDateFormats[i].trim()).getParser();
        }
    }

    /* Final date formater builder */
    final DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder().append(null, dateTimeParser)
            .toFormatter();

    /* Parse user supplied date */
    final DateTime updatedDate = dateTimeFormatter.parseDateTime(date);

    logger.debug("----Inside validateInputDate, updated date: " + updatedDate);

    /* Return updated date */
    return updatedDate;
}

From source file:com.metabroadcast.common.social.auth.ictomorrow.ICTomorrowApiHelper.java

private ICTomorrowItemMetadata getItem(Element itemElement) {
    Integer contentHandle = Integer.valueOf(itemElement.getAttributeValue("ContentHandle"));
    String contentKey = itemElement.getFirstChildElement("Key").getValue().trim();

    ICTomorrowItemMetadata item = new ICTomorrowItemMetadata(contentHandle, contentKey);

    item.setChannelTitle(getCharacteristic(itemElement, "Channel-Title"));
    String link = getCharacteristic(itemElement, "Link");
    if (link == null) {
        link = getCharacteristic(itemElement, "URL Location");
    }/*from   www . ja va  2s  . c  o m*/
    item.setLink(link);
    item.setSource(getCharacteristic(itemElement, "Source"));
    item.setWebmaster(getCharacteristic(itemElement, "WebMaster"));
    item.setTitle(getOptionalValue(itemElement, "Title"));
    item.setContentProvider(getOptionalValue(itemElement, "ContentProvider"));
    item.setLicenceTemplateName(getOptionalValue(itemElement, "LicenseTemplateName"));

    String keywords = getCharacteristic(itemElement, "Keywords");
    if (keywords != null) {
        item.setKeywords(
                ImmutableSet.copyOf(Splitter.on(",").trimResults().omitEmptyStrings().split(keywords)));
    }

    String dateString = getCharacteristic(itemElement, "Pub-date");
    if (dateString != null) {
        DateTimeFormatter dateParser = new DateTimeFormatterBuilder().appendDayOfWeekShortText()
                .appendLiteral(", ").appendDayOfMonth(2).appendLiteral(" ").appendMonthOfYearShortText()
                .appendLiteral(" ").appendYear(4, 4).appendLiteral(" ").appendHourOfDay(2).appendLiteral(":")
                .appendMinuteOfHour(2).appendLiteral(":").appendSecondOfMinute(2).appendLiteral(" GMT")
                .toFormatter();
        //DateTimeFormat.forPattern("E, dd MM yyyy HH:mm:ss z");

        DateTime date = dateParser.parseDateTime(dateString);

        item.setPublishedDate(date);
    }

    return item;
}

From source file:com.miraisolutions.xlconnect.utils.RPOSIXDateTimeFormatter.java

License:Open Source License

private org.joda.time.format.DateTimeFormatter getFormatter(String format) {
    if (cache.containsKey(format))
        return cache.get(format);

    DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();

    for (int i = 0; i < format.length(); ++i) {
        if (format.charAt(i) == '%' && i + 1 < format.length()) {
            char specifier = format.charAt(++i);
            switch (specifier) {
            case '%':
                builder.appendLiteral("%");
                break;
            case 'a':
                // Abbreviated weekday name in the current locale. (Also matches
                // full name on input.)
                builder.appendDayOfWeekShortText();
                break;
            case 'A':
                // Full weekday name in the current locale.  (Also matches
                // abbreviated name on input.)
                builder.appendDayOfWeekText();
                break;
            case 'b':
                // Abbreviated month name in the current locale. (Also matches
                // full name on input.)
                builder.appendMonthOfYearShortText();
                break;
            case 'B':
                // Full month name in the current locale.  (Also matches
                // abbreviated name on input.)
                builder.appendMonthOfYearText();
                break;
            case 'c':
                //  Date and time.  Locale-specific on output, "%a %b %e
                // %H:%M:%S %Y" on input.
                throw new UnsupportedOperationException("%c not yet implemented");
            case 'd':
                // Day of the month as decimal number (01-31).
                builder.appendDayOfMonth(2);
                break;
            case 'H':
                // Hours as decimal number (00-23).
                builder.appendHourOfDay(2);
                break;
            case 'I':
                // Hours as decimal number (01-12).
                builder.appendHourOfHalfday(2);
                break;
            case 'j':
                // Day of year as decimal number (001-366).
                builder.appendDayOfYear(3);
                break;
            case 'm':
                // Month as decimal number (01-12).
                builder.appendMonthOfYear(2);
                break;
            case 'M':
                // Minute as decimal number (00-59).
                builder.appendMinuteOfHour(2);
                break;
            case 'p':
                // AM/PM indicator in the locale.  Used in conjunction with %I
                // and *not* with %H.  An empty string in some locales.
                builder.appendHalfdayOfDayText();
                break;
            case 'O':
                if (i + 1 >= format.length()) {
                    builder.appendLiteral("%O");
                } else {
                    switch (format.charAt(++i)) {
                    case 'S':
                        // Specific to R is %OSn, which for output gives the seconds to 0
                        // <= n <= 6 decimal places (and if %OS is not followed by a
                        // digit, it uses the setting of getOption("digits.secs"), or if
                        // that is unset, n = 3).  Further, for strptime %OS will input
                        // seconds including fractional seconds.  Note that %S ignores (and
                        // not rounds) fractional parts on output.

                        // TODO: not sure how to handle fractional seconds here
                        builder.appendSecondOfMinute(2);
                        break;
                    default:
                        throw new UnsupportedOperationException("%O[dHImMUVwWy] not yet implemented");
                    }/*  ww  w .j  a  v  a  2s.  c  o m*/
                }
                break;
            case 'S':
                // Second as decimal number (00-61), allowing for up to two
                // leap-seconds (but POSIX-compliant implementations will ignore
                // leap seconds).
                // TODO: I have no idea what the docs are talking about in relation
                // to leap seconds
                builder.appendSecondOfMinute(2);
                break;
            // case 'U':
            // Week of the year as decimal number (00-53) using Sunday as
            // the first day 1 of the week (and typically with the first
            //  Sunday of the year as day 1 of week 1).  The US convention.
            // case 'w':
            // Weekday as decimal number (0-6, Sunday is 0).

            // case 'W':
            // Week of the year as decimal number (00-53) using Monday as
            // the first day of week (and typically with the first Monday of
            // the year as day 1 of week 1). The UK convention.

            // %x Date.  Locale-specific on output, "%y/%m/%d" on input.

            //%X Time.  Locale-specific on output, "%H:%M:%S" on input.

            case 'y':
                // Year without century (00-99). Values 00 to 68 are prefixed by
                // 20 and 69 to 99 by 19 - that is the behaviour specified by
                // the 2004 POSIX standard, but it does also say it is expected
                // that in a future version the default century inferred from a
                // 2-digit year will change.
                builder.appendTwoDigitYear(1968, true);
                break;
            case 'Y':
                // Year with century
                builder.appendYear(1, 4);
                break;
            case 'z':
                // Signed offset in hours and minutes from UTC, so -0800 is 8
                // hours behind UTC.
                builder.appendTimeZoneOffset(null /* always show offset, even when zero */,
                        true /* show seperators */, 1 /* min fields (hour, minute, etc) */,
                        2 /* max fields */ );
                break;
            case 'Z':
                // (output only.) Time zone as a character string (empty if not
                // available).
                builder.appendTimeZoneName();
                break;
            default:
                throw new UnsupportedOperationException("%" + specifier + " not yet implemented");
            }
        } else {
            builder.appendLiteral(format.substring(i, i + 1));
        }
    }
    org.joda.time.format.DateTimeFormatter formatter = builder.toFormatter();
    cache.put(format, formatter);
    return formatter;
}

From source file:com.proofpoint.http.server.DelimitedRequestLog.java

License:Apache License

public DelimitedRequestLog(String filename, int retainDays) throws IOException {
    out = new RolloverFileOutputStream(filename, true, retainDays);
    writer = new OutputStreamWriter(out);

    isoFormatter = new DateTimeFormatterBuilder().append(ISODateTimeFormat.dateHourMinuteSecondFraction())
            .appendTimeZoneOffset("Z", true, 2, 2).toFormatter();
}

From source file:com.quinsoft.zeidon.utils.JoeUtils.java

License:Open Source License

/**
 * Returns a DateTimeFormatter that can parse and print dates in the format of
 * editString.  There can be multiple edit strings which are separated by a "|"
 * character.  If there are more than one then the first one is considered to
 * be the "print" format./*from w  w w . j  a  v a 2s  . com*/
 *
 * NOTE: Automatically adds ISO 8601 parser: 2016-11-29T05:41:02+00:00
 *
 * @param editString
 * @return
 */
public static DateTimeFormatter createDateFormatterFromEditString(String editString) {
    String[] strings = editString.split("\\|");
    DateTimeParser list[] = new DateTimeParser[strings.length + 1];
    DateTimePrinter printer = null;
    for (int i = 0; i < strings.length; i++) {
        try {
            DateTimeFormatter f = DateTimeFormat.forPattern(strings[i]);
            if (printer == null)
                printer = f.getPrinter();

            list[i] = f.getParser();
        } catch (Exception e) {
            throw ZeidonException.wrapException(e).appendMessage("Format string = %s", strings[i]);
        }
    }

    list[strings.length] = ISODateTimeFormat.dateTimeParser().getParser();

    DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
    builder.append(printer, list);
    DateTimeFormatter formatter = builder.toFormatter();
    return formatter;
}

From source file:com.reveldigital.api.util.DateTypeFormatter.java

License:Apache License

/**
 * Create date formatter//from  w w  w. j av  a  2s. c o m
 */
public DateTypeFormatter() {
    formats = new DateTimeFormatter[4];
    formats[0] = ISODateTimeFormat.dateTime(); //.withZone(DateTimeZone.UTC);
    formats[1] = new DateTimeFormatterBuilder().appendPattern(DATE_TIME_FORMAT).toFormatter();
    formats[2] = new DateTimeFormatterBuilder().appendPattern(DATE_ONLY_FORMAT).toFormatter();
    formats[3] = new DateTimeFormatterBuilder().appendPattern(TIME_ONLY_FORMAT).toFormatter();
}

From source file:com.srotya.tau.dengine.validation.DateInterceptor.java

License:Apache License

public DateInterceptor() {
    formatter = new DateTimeFormatterBuilder().append(null, formats).toFormatter();
}

From source file:com.tuplejump.stargate.Dates.java

License:Apache License

/**
 * Parses a joda based pattern, including some named ones (similar to the built in Joda ISO ones).
 *//*w w  w.  j av a  2 s .  com*/
public static FormatDateTimeFormatter forPattern(String input, Locale locale) {
    if (StringUtils.isNotBlank(input)) {
        input = input.trim();
    }
    if (input == null || input.length() == 0) {
        throw new IllegalArgumentException("No date pattern provided");
    }

    DateTimeFormatter formatter;
    if ("basicDate".equals(input) || "basic_date".equals(input)) {
        formatter = ISODateTimeFormat.basicDate();
    } else if ("basicDateTime".equals(input) || "basic_date_time".equals(input)) {
        formatter = ISODateTimeFormat.basicDateTime();
    } else if ("basicDateTimeNoMillis".equals(input) || "basic_date_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.basicDateTimeNoMillis();
    } else if ("basicOrdinalDate".equals(input) || "basic_ordinal_date".equals(input)) {
        formatter = ISODateTimeFormat.basicOrdinalDate();
    } else if ("basicOrdinalDateTime".equals(input) || "basic_ordinal_date_time".equals(input)) {
        formatter = ISODateTimeFormat.basicOrdinalDateTime();
    } else if ("basicOrdinalDateTimeNoMillis".equals(input)
            || "basic_ordinal_date_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.basicOrdinalDateTimeNoMillis();
    } else if ("basicTime".equals(input) || "basic_time".equals(input)) {
        formatter = ISODateTimeFormat.basicTime();
    } else if ("basicTimeNoMillis".equals(input) || "basic_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.basicTimeNoMillis();
    } else if ("basicTTime".equals(input) || "basic_t_Time".equals(input)) {
        formatter = ISODateTimeFormat.basicTTime();
    } else if ("basicTTimeNoMillis".equals(input) || "basic_t_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.basicTTimeNoMillis();
    } else if ("basicWeekDate".equals(input) || "basic_week_date".equals(input)) {
        formatter = ISODateTimeFormat.basicWeekDate();
    } else if ("basicWeekDateTime".equals(input) || "basic_week_date_time".equals(input)) {
        formatter = ISODateTimeFormat.basicWeekDateTime();
    } else if ("basicWeekDateTimeNoMillis".equals(input) || "basic_week_date_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.basicWeekDateTimeNoMillis();
    } else if ("date".equals(input)) {
        formatter = ISODateTimeFormat.date();
    } else if ("dateHour".equals(input) || "date_hour".equals(input)) {
        formatter = ISODateTimeFormat.dateHour();
    } else if ("dateHourMinute".equals(input) || "date_hour_minute".equals(input)) {
        formatter = ISODateTimeFormat.dateHourMinute();
    } else if ("dateHourMinuteSecond".equals(input) || "date_hour_minute_second".equals(input)) {
        formatter = ISODateTimeFormat.dateHourMinuteSecond();
    } else if ("dateHourMinuteSecondFraction".equals(input)
            || "date_hour_minute_second_fraction".equals(input)) {
        formatter = ISODateTimeFormat.dateHourMinuteSecondFraction();
    } else if ("dateHourMinuteSecondMillis".equals(input) || "date_hour_minute_second_millis".equals(input)) {
        formatter = ISODateTimeFormat.dateHourMinuteSecondMillis();
    } else if ("dateOptionalTime".equals(input) || "date_optional_time".equals(input)) {
        // in this case, we have a separate parser and printer since the dataOptionalTimeParser can't print
        // this sucks we should use the root local by default and not be dependent on the node
        return new FormatDateTimeFormatter(input,
                ISODateTimeFormat.dateOptionalTimeParser().withZone(DateTimeZone.UTC),
                ISODateTimeFormat.dateTime().withZone(DateTimeZone.UTC), locale);
    } else if ("dateTime".equals(input) || "date_time".equals(input)) {
        formatter = ISODateTimeFormat.dateTime();
    } else if ("dateTimeNoMillis".equals(input) || "date_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.dateTimeNoMillis();
    } else if ("hour".equals(input)) {
        formatter = ISODateTimeFormat.hour();
    } else if ("hourMinute".equals(input) || "hour_minute".equals(input)) {
        formatter = ISODateTimeFormat.hourMinute();
    } else if ("hourMinuteSecond".equals(input) || "hour_minute_second".equals(input)) {
        formatter = ISODateTimeFormat.hourMinuteSecond();
    } else if ("hourMinuteSecondFraction".equals(input) || "hour_minute_second_fraction".equals(input)) {
        formatter = ISODateTimeFormat.hourMinuteSecondFraction();
    } else if ("hourMinuteSecondMillis".equals(input) || "hour_minute_second_millis".equals(input)) {
        formatter = ISODateTimeFormat.hourMinuteSecondMillis();
    } else if ("ordinalDate".equals(input) || "ordinal_date".equals(input)) {
        formatter = ISODateTimeFormat.ordinalDate();
    } else if ("ordinalDateTime".equals(input) || "ordinal_date_time".equals(input)) {
        formatter = ISODateTimeFormat.ordinalDateTime();
    } else if ("ordinalDateTimeNoMillis".equals(input) || "ordinal_date_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.ordinalDateTimeNoMillis();
    } else if ("time".equals(input)) {
        formatter = ISODateTimeFormat.time();
    } else if ("tTime".equals(input) || "t_time".equals(input)) {
        formatter = ISODateTimeFormat.tTime();
    } else if ("tTimeNoMillis".equals(input) || "t_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.tTimeNoMillis();
    } else if ("weekDate".equals(input) || "week_date".equals(input)) {
        formatter = ISODateTimeFormat.weekDate();
    } else if ("weekDateTime".equals(input) || "week_date_time".equals(input)) {
        formatter = ISODateTimeFormat.weekDateTime();
    } else if ("weekyear".equals(input) || "week_year".equals(input)) {
        formatter = ISODateTimeFormat.weekyear();
    } else if ("weekyearWeek".equals(input)) {
        formatter = ISODateTimeFormat.weekyearWeek();
    } else if ("year".equals(input)) {
        formatter = ISODateTimeFormat.year();
    } else if ("yearMonth".equals(input) || "year_month".equals(input)) {
        formatter = ISODateTimeFormat.yearMonth();
    } else if ("yearMonthDay".equals(input) || "year_month_day".equals(input)) {
        formatter = ISODateTimeFormat.yearMonthDay();
    } else if (StringUtils.isNotBlank(input) && input.contains("||")) {
        String[] formats = StringUtils.split(input, "||");
        DateTimeParser[] parsers = new DateTimeParser[formats.length];

        if (formats.length == 1) {
            formatter = forPattern(input, locale).parser();
        } else {
            DateTimeFormatter dateTimeFormatter = null;
            for (int i = 0; i < formats.length; i++) {
                FormatDateTimeFormatter currentFormatter = forPattern(formats[i], locale);
                DateTimeFormatter currentParser = currentFormatter.parser();
                if (dateTimeFormatter == null) {
                    dateTimeFormatter = currentFormatter.printer();
                }
                parsers[i] = currentParser.getParser();
            }

            DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder()
                    .append(dateTimeFormatter.withZone(DateTimeZone.UTC).getPrinter(), parsers);
            formatter = builder.toFormatter();
        }
    } else {
        try {

            formatter = DateTimeFormat.forPattern(input);
        } catch (IllegalArgumentException e) {
            throw new IllegalArgumentException("Invalid format: [" + input + "]: " + e.getMessage(), e);
        }
    }

    return new FormatDateTimeFormatter(input, formatter.withZone(DateTimeZone.UTC), locale);
}

From source file:com.tuplejump.stargate.lucene.Dates.java

License:Apache License

/**
 * Parses a joda based pattern, including some named ones (similar to the built in Joda ISO ones).
 *//* w w w.  j  a  v  a2  s  .  c o  m*/
public static FormatDateTimeFormatter forPattern(String input, Locale locale) {
    if (StringUtils.isNotBlank(input)) {
        input = input.trim();
    }
    DateTimeFormatter formatter;
    if (input == null || input.length() == 0) {
        formatter = ISODateTimeFormat.yearMonthDay();
    } else if ("basicDate".equals(input) || "basic_date".equals(input)) {
        formatter = ISODateTimeFormat.basicDate();
    } else if ("basicDateTime".equals(input) || "basic_date_time".equals(input)) {
        formatter = ISODateTimeFormat.basicDateTime();
    } else if ("basicDateTimeNoMillis".equals(input) || "basic_date_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.basicDateTimeNoMillis();
    } else if ("basicOrdinalDate".equals(input) || "basic_ordinal_date".equals(input)) {
        formatter = ISODateTimeFormat.basicOrdinalDate();
    } else if ("basicOrdinalDateTime".equals(input) || "basic_ordinal_date_time".equals(input)) {
        formatter = ISODateTimeFormat.basicOrdinalDateTime();
    } else if ("basicOrdinalDateTimeNoMillis".equals(input)
            || "basic_ordinal_date_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.basicOrdinalDateTimeNoMillis();
    } else if ("basicTime".equals(input) || "basic_time".equals(input)) {
        formatter = ISODateTimeFormat.basicTime();
    } else if ("basicTimeNoMillis".equals(input) || "basic_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.basicTimeNoMillis();
    } else if ("basicTTime".equals(input) || "basic_t_Time".equals(input)) {
        formatter = ISODateTimeFormat.basicTTime();
    } else if ("basicTTimeNoMillis".equals(input) || "basic_t_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.basicTTimeNoMillis();
    } else if ("basicWeekDate".equals(input) || "basic_week_date".equals(input)) {
        formatter = ISODateTimeFormat.basicWeekDate();
    } else if ("basicWeekDateTime".equals(input) || "basic_week_date_time".equals(input)) {
        formatter = ISODateTimeFormat.basicWeekDateTime();
    } else if ("basicWeekDateTimeNoMillis".equals(input) || "basic_week_date_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.basicWeekDateTimeNoMillis();
    } else if ("date".equals(input)) {
        formatter = ISODateTimeFormat.date();
    } else if ("dateHour".equals(input) || "date_hour".equals(input)) {
        formatter = ISODateTimeFormat.dateHour();
    } else if ("dateHourMinute".equals(input) || "date_hour_minute".equals(input)) {
        formatter = ISODateTimeFormat.dateHourMinute();
    } else if ("dateHourMinuteSecond".equals(input) || "date_hour_minute_second".equals(input)) {
        formatter = ISODateTimeFormat.dateHourMinuteSecond();
    } else if ("dateHourMinuteSecondFraction".equals(input)
            || "date_hour_minute_second_fraction".equals(input)) {
        formatter = ISODateTimeFormat.dateHourMinuteSecondFraction();
    } else if ("dateHourMinuteSecondMillis".equals(input) || "date_hour_minute_second_millis".equals(input)) {
        formatter = ISODateTimeFormat.dateHourMinuteSecondMillis();
    } else if ("dateOptionalTime".equals(input) || "date_optional_time".equals(input)) {
        // in this case, we have a separate parser and printer since the dataOptionalTimeParser can't print
        // this sucks we should use the root local by default and not be dependent on the node
        return new FormatDateTimeFormatter(input,
                ISODateTimeFormat.dateOptionalTimeParser().withZone(DateTimeZone.UTC),
                ISODateTimeFormat.dateTime().withZone(DateTimeZone.UTC), locale);
    } else if ("dateTime".equals(input) || "date_time".equals(input)) {
        formatter = ISODateTimeFormat.dateTime();
    } else if ("dateTimeNoMillis".equals(input) || "date_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.dateTimeNoMillis();
    } else if ("hour".equals(input)) {
        formatter = ISODateTimeFormat.hour();
    } else if ("hourMinute".equals(input) || "hour_minute".equals(input)) {
        formatter = ISODateTimeFormat.hourMinute();
    } else if ("hourMinuteSecond".equals(input) || "hour_minute_second".equals(input)) {
        formatter = ISODateTimeFormat.hourMinuteSecond();
    } else if ("hourMinuteSecondFraction".equals(input) || "hour_minute_second_fraction".equals(input)) {
        formatter = ISODateTimeFormat.hourMinuteSecondFraction();
    } else if ("hourMinuteSecondMillis".equals(input) || "hour_minute_second_millis".equals(input)) {
        formatter = ISODateTimeFormat.hourMinuteSecondMillis();
    } else if ("ordinalDate".equals(input) || "ordinal_date".equals(input)) {
        formatter = ISODateTimeFormat.ordinalDate();
    } else if ("ordinalDateTime".equals(input) || "ordinal_date_time".equals(input)) {
        formatter = ISODateTimeFormat.ordinalDateTime();
    } else if ("ordinalDateTimeNoMillis".equals(input) || "ordinal_date_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.ordinalDateTimeNoMillis();
    } else if ("time".equals(input)) {
        formatter = ISODateTimeFormat.time();
    } else if ("tTime".equals(input) || "t_time".equals(input)) {
        formatter = ISODateTimeFormat.tTime();
    } else if ("tTimeNoMillis".equals(input) || "t_time_no_millis".equals(input)) {
        formatter = ISODateTimeFormat.tTimeNoMillis();
    } else if ("weekDate".equals(input) || "week_date".equals(input)) {
        formatter = ISODateTimeFormat.weekDate();
    } else if ("weekDateTime".equals(input) || "week_date_time".equals(input)) {
        formatter = ISODateTimeFormat.weekDateTime();
    } else if ("weekyear".equals(input) || "week_year".equals(input)) {
        formatter = ISODateTimeFormat.weekyear();
    } else if ("weekyearWeek".equals(input)) {
        formatter = ISODateTimeFormat.weekyearWeek();
    } else if ("year".equals(input)) {
        formatter = ISODateTimeFormat.year();
    } else if ("yearMonth".equals(input) || "year_month".equals(input)) {
        formatter = ISODateTimeFormat.yearMonth();
    } else if ("yearMonthDay".equals(input) || "year_month_day".equals(input)) {
        formatter = ISODateTimeFormat.yearMonthDay();
    } else if (StringUtils.isNotBlank(input) && input.contains("||")) {
        String[] formats = StringUtils.split(input, "||");
        DateTimeParser[] parsers = new DateTimeParser[formats.length];

        if (formats.length == 1) {
            formatter = forPattern(input, locale).parser();
        } else {
            DateTimeFormatter dateTimeFormatter = null;
            for (int i = 0; i < formats.length; i++) {
                FormatDateTimeFormatter currentFormatter = forPattern(formats[i], locale);
                DateTimeFormatter currentParser = currentFormatter.parser();
                if (dateTimeFormatter == null) {
                    dateTimeFormatter = currentFormatter.printer();
                }
                parsers[i] = currentParser.getParser();
            }
            DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder()
                    .append(dateTimeFormatter.withZone(DateTimeZone.UTC).getPrinter(), parsers);
            formatter = builder.toFormatter();
        }
    } else {
        try {

            formatter = DateTimeFormat.forPattern(input);
        } catch (IllegalArgumentException e) {
            throw new IllegalArgumentException("Invalid format: [" + input + "]: " + e.getMessage(), e);
        }
    }

    return new FormatDateTimeFormatter(input, formatter.withZone(DateTimeZone.UTC), locale);
}

From source file:com.wealdtech.utils.RangeFormatter.java

License:Open Source License

private String doFormat(final DateTime datetime, final Details formatDetails) {
    final DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
    boolean started = false;
    if (style != Style.TIME_ONLY) {
        if (formatDetails.showDayOfWeek) {
            if (style == Style.NORMAL) {
                builder.appendDayOfWeekShortText();
            } else {
                builder.appendDayOfWeekText();
            }/*from w w  w .  j  av a2 s  .  c o m*/
            started = true;
        }
        if (formatDetails.showDayOfMonth) {
            if (started) {
                builder.appendLiteral(' ');
            }
            builder.appendDayOfMonth(1);
            started = true;
        }
        if (formatDetails.showMonthOfYear) {
            if (started) {
                builder.appendLiteral(' ');
            }
            if (style == Style.NORMAL) {
                builder.appendMonthOfYearShortText();
            } else {
                builder.appendMonthOfYearText();
            }
            started = true;
        }
        if (formatDetails.showYear) {
            if (started) {
                builder.appendLiteral(' ');
            }
            builder.appendYear(4, 4);
            started = true;
        }
    }
    if (formatDetails.showTime) {
        if (started) {
            builder.appendLiteral(' ');
        }
        builder.appendHourOfDay(2);
        builder.appendLiteral(':');
        builder.appendMinuteOfHour(2);
        started = true;
    }

    if (started) {
        return datetime.toString(builder.toFormatter().withLocale(locale));
    } else {
        return null;
    }
}