Недопустимая ошибка формата с шаблоном часового пояса Joda Time

Я не понимаю, почему следующие строки кода не работают с Joda Time:

DateTime now = new DateTime();
DateTimeFormatter dateTimeFormatter = DateTimeFormat.
                                              forPattern("yyyyMMddhhmmss Z");
System.out.println(dateTimeFormatter.print(now));
DateTime d = x.parseDateTime("200906031633 -0300");

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

java.lang.IllegalArgumentException: неверный формат: «200006031633 -0300» имеет неверный формат «-0300» в org.joda.time.format.DateTimeFormatter.parseDateTime (DateTimeFormatter.java:683)

Что для меня странно, так это то, что System.out.prinln(dateTimeFormatter.print(now)); нормально и печатает по шаблону: 20110131101805 +0100

В чем проблема? Из того, что я прочитал в синтаксисе шаблона Joda Time схема кажется правильной.

Спасибо!


person ovdsrn    schedule 31.01.2011    source источник
comment
Спасибо, парни! Какая глупая ошибка :) Спасибо за помощь, думаю без нее я бы потерял еще час.   -  person ovdsrn    schedule 01.02.2011


Ответы (2)


Прежде всего, ваш шаблон должен использовать «ЧЧ», а не «чч», если вы ожидаете, что он проанализирует это значение. Во-вторых, вам также нужно будет включить секунды в значение.

E.g.

DateTime d = dateTimeFormatter.parseDateTime("20090603163300 -0300");
person Jordan Allan    schedule 31.01.2011
comment
Да, только что поймал. Спасибо. - person Jordan Allan; 01.02.2011

Проблема в том, что вам не хватает секунд в 200906031633 -0300. Это работает, если я добавлю к этому секунды, как показано ниже: (200906031633"00" -0300)

DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyyMMddHHmmss Z");    
DateTime d = dateTimeFormatter.parseDateTime("20090603163300 -0300");
person Aravind Yarram    schedule 31.01.2011