2016-07-13 2 views
2

У меня есть следующий синтаксический анализатор даты:Эквивалент joda.ISODateTimeFormat в java.time?

ISODateTimeFormat.dateTimeParser().withOffsetParsed().

Я хотел бы реорганизовать это на java.time api. Но каков точный эквивалент парсера выше, особенно в отношении смещения?

ответ

3

лучше эквивалентно должна быть этой константой в пакете java.time.format, который предпочитает разобранное смещение в соответствии с документацией (например, поведение при Joda-withOffsetParsed() используется):

DateTimeFormatter.ISO_OFFSET_DATE_TIME

Однако, Есть еще небольшие отличия. Десятичный разделитель должен быть точкой в ​​Java-8 (запятая не допускается, хотя и действительна и даже рекомендована в документе ISO). Кроме того: Java-8 управляет наносекундной точностью в отличие от точности миллисекунд Jodas. И, возможно, самое важное различие: если на вашем входе отсутствует смещение, то Java-8 генерирует исключение, но Joda not (и применяет часовой пояс по умолчанию).

О выборе типа: Поскольку вы работаете с DateTime и фиксированными смещениями, лучший эквивалент должен быть здесь OffsetDateTime в Java-8. Пример миграции:

DateTime dt = ISODateTimeFormat.dateTimeParser().withOffsetParsed().parseDateTime(input); 

=>

OffsetDateTime odt = OffsetDateTime.parse(input, DateTimeFormatter.ISO_OFFSET_DATE_TIME); 
0

Я не думаю, что для этого есть точный эквивалент. Однако вы можете использовать класс DateTimeFormatter для создания дат в соответствии с требуемым шаблоном.

Смежные вопросы