Ошибка неверного формата с шаблоном часового пояса Joda Time - PullRequest
1 голос
/ 01 февраля 2011

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

Спасибо!

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

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

Например

DateTime d = dateTimeFormatter.parseDateTime("20090603163300 -0300");
2 голосов
/ 01 февраля 2011

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

DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyyMMddHHmmss Z");    
DateTime d = dateTimeFormatter.parseDateTime("20090603163300 -0300");
...