2016-12-17 4 views
0

Я пытаюсь разобрать этот DateTime:Как разобрать threeten DATETIME

DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder() 
        .appendPattern("dd/MM/yyyy hh:mm:ss") 
        .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0) 
        .parseDefaulting(ChronoField.MILLI_OF_SECOND, 0) 
        .toFormatter(); 

      String ultimaAtualizacaoTexto = "17/12/2016 01:41:43"; 

      LocalDateTime ultimaAtualizacaoDateTime = 
        LocalDateTime.parse(ultimaAtualizacaoTexto, dateTimeFormatter); 

Но я получаю эту ошибку:

DateTimeParseException: Text '17/12/2016 01:41:43' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: DateTimeBuilder[fields={MilliOfSecond=0, MinuteOfHour=41, MicroOfSecond=0, NanoOfSecond=0, HourOfAmPm=1, SecondOfMinute=43}, ISO, null, 2016-12-17, null], type org.threeten.bp.format.DateTimeBuilder 

Я не уверен, что происходит ... Это должно полностью работать!

Любая помощь? Спасибо, в любом случае!

ответ

1

Итак ... Я должен был изменить «дд/мм/гггг чч: мм: сс» до «дд/мм/гггг чч: мм: сс»

Поскольку чч только для 12 AM/PM ч. HH - в течение 24 часов.

+0

Это очень распространенная ошибка. Есть много SO-сообщений, содержащих эту ошибку. И это не характерно для Threeten или Java-8, но также распространено в «SimpleDateFormat» и «Joda-Time». Некоторые люди даже не замечают никаких проблем при использовании «h» без am/pm-маркера в форматировании (эффективно печатать неверные данные), но ложно считают, что все в порядке. Это вдохновило меня на создание некоторых [проверки правильности шаблонов] (https://github.com/MenoData/Time4J/issues/565) в мою собственную библиотеку времени. Другие библиотеки могли бы получить прибыль от такой проверки. –

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