Joda Time, синтаксический анализ часов и часов одновременно

Я хочу иметь DateTime Parser, который может анализировать время в «обычных» часах или в часах. Означает, что я могу иметь 00:00:00 или 24:00:00 одновременно. Дальнейшие часы разрешены только в полночь. Значит 24:00:01 не допускается. Это должно быть выражено как 00:00:01. Это как-то достижимо? Мой парсер в настоящее время не учитывает часы:

//The formatter for the timezone
DateTimeFormatter timezoneFormatter = new DateTimeFormatterBuilder().appendTimeZoneOffset(null, true, 2, 2)
            .toFormatter();
//The formatter for the fractional (3 digit) seconds
DateTimeFormatter fractionalSecondsFormatter = new DateTimeFormatterBuilder().appendLiteral('.')
            .appendFractionOfSecond(3, 3).toFormatter();

// Here a parser is created that parses a string of the form HH:mm:ss. Further the string may have
// 3 digit fractional seconds (with a dot as prefix) and may have a timezone.
DATE_TIME_PARSER = new DateTimeFormatterBuilder().appendHourOfDay(2).appendMinuteOfHour(2).appendSecondOfMinute(2)
            .appendOptional(fractionalSecondsFormatter.getParser()).appendOptional(timezoneFormatter.getParser())
            .toFormatter();

Было бы здорово, если бы кто-нибудь мог мне помочь.

С уважением, Флориан


person Florian Huonder    schedule 06.08.2011    source источник


Ответы (2)


Joda-Time не поддерживает синтаксический анализ 24:00. Если вы хотите разобрать это, вам нужно реализовать DateTimeParser самостоятельно и интегрировать его с помощью DateTimeFormatterBuilder.

person JodaStephen    schedule 08.08.2011

Часы 24 приравниваются к 23:00. Допускается использование формата kk: mm: ss 24:00:01. В этом смысле 24:00:00 никогда не равно 00:00:00.

person Rob Parker    schedule 07.08.2011
comment
В отношении ISO 8601 (и xs: time) часы описываются следующим образом: Две цифры в формате hh могут иметь значения от 0 до 24. Если значение элемента часа равно 24, то значения элементов минут и секунд должны быть 00 и 00. 24 не может быть равно 23. Тогда часы будут 21:00, 22:00, 24:00, 00:00. Я хочу сопоставить часовой формат ISO8601 с Joda (в Joda hh - 00-23, а kk - 01-24, но с kk 24:01 разрешено, а с ISO8601 - нет) - person Florian Huonder; 08.08.2011
comment
Я понимаю, что 24:00 - это тот же момент времени, что и 00:00, но 24:00 за день до 00:00. 24:00 (ISO8601) можно использовать только для точного описания полуночи. - person Florian Huonder; 08.08.2011