Либеральный разбор даты / времени в Joda-Time - PullRequest
4 голосов
/ 16 февраля 2012

Можно ли создать один DateTimeParser, который будет анализировать:

  • даты со временем, заданным
  • даты без времени (при условии, что время будет началом дня)
  • раз без дат (при условии, что дата будет сегодня)

или мне нужно иметь три отдельных анализатора и пытаться анализировать строки с каждым из них?

Другими словамиМожно ли определить дополнительные поля в парсере?

1 Ответ

3 голосов
/ 16 февраля 2012

org.joda.time.format.ISODateTimeFormat имеет статический метод dateOptionalTimeParser(), который использует приведенный ниже код, основанный на классе DateTimeFomatterBuilder, который имеет метод appendOptional - вы, вероятно, сможете адаптировать метод к вашим требованиям ...Ссылка: http://joda -time.sourceforge.net / apidocs / org / joda / time / format / DateTimeFormatterBuilder.html

public static DateTimeFormatter dateOptionalTimeParser() {
    if (dotp == null) {
        DateTimeParser timeOrOffset = new DateTimeFormatterBuilder()
            .appendLiteral('T')
            .appendOptional(timeElementParser().getParser())
            .appendOptional(offsetElement().getParser())
            .toParser();
        dotp = new DateTimeFormatterBuilder()
            .append(dateElementParser())
            .appendOptional(timeOrOffset)
            .toFormatter();
    }
    return dotp;
}
...