Исключение времени выполнения при попытке проанализировать время даты с помощью Joda DateTimeFormatter

Я выполните следующий код, который дает мне

"Exception in thread "main" org.joda.time.IllegalFieldValueException: Cannot parse "12/17/2017 23:10": Value 23 for clockhourOfHalfday must be in the range [1,12]"

DateTimeFormatter dt = DateTimeFormat.forPattern("MM/dd/yyyy hh:mm");
System.out.println(dt.parseDateTime("12/17/2017 23:10"));

Если я буду парсить "12/17/2017 02:10" затем он успешно выполняет.

Итак, в основном, мне нужно проанализировать время с 24-часовым форматом.

спасибо заранее.

2 ответов


h для половины дня в JodaTime, как вы можете видеть в исключении.
Вам нужно использовать H (или k):

DateTimeFormatter dt = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm");
System.out.println(dt.parseDateTime("12/17/2017 23:10"));

больше информации в DateTimeFormat API-интерфейс.


Это может быть достигнуто с помощью простого формата даты тоже.

DateFormat readDate = new SimpleDateFormat( "MM/dd/yyyy HH:mm");
Date date = readDate.parse("12/17/2017 23:10");
DateFormat writeDate = new SimpleDateFormat( "MM/dd/yyyy HH:mm");
System.out.println(writeDate.format(date));