我不明白为什么以下几行代码不适用于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上看到的内容,模式似乎是正确的。
谢谢!
答案 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");