Joda Time时区模式的格式错误无效

时间:2011-01-31 21:23:36

标签: java datetime timezone jodatime date-format

我不明白为什么以下几行代码不适用于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's pattern syntax上看到的内容,模式似乎是正确的。

谢谢!

2 个答案:

答案 0 :(得分:2)

问题是您在 200906031633 -0300 中缺少秒数。如果我添加秒数,它就可以工作,如下所示:(200906031633“00”-0300)

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

答案 1 :(得分:2)

首先,如果您希望它解析该值,您的模式应该使用“HH”而不是“hh”。其次,您还需要在值中包含秒数。

E.g。

DateTime d = dateTimeFormatter.parseDateTime("20090603163300 -0300");