2014-01-17 2 views
9

Я выполнение следующего кода, который дает мневыполнение исключения при попытке разобрать время дат, используя 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-часовым форматом.

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

ответ

23

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.

+0

Работает. Спасибо :) – Rahul

+3

(Это 12-часовые часы в SimpleDateFormat тоже ...) –

2

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

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)); 
Смежные вопросы