【问题标题】:Invalid format error with Joda Time timezone patternJoda Time 时区模式的格式错误无效
【发布时间】:2011-06-18 21:11:01
【问题描述】:

我不明白为什么以下代码行不适用于 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”在 org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:683) 处的“-0300”处格式错误

对我来说奇怪的是 System.out.prinln(dateTimeFormatter.print(now)); 它很好并且根据模式打印: 20110131101805 +0100

有什么问题?从我在Joda Time's pattern syntax 上读到的内容来看,这种模式似乎是正确的。

谢谢!

【问题讨论】:

  • 谢谢大家!多么愚蠢的错误:)谢谢你的帮助,我想如果没有它,我会再浪费一个小时。

标签: java datetime timezone jodatime date-format


【解决方案1】:

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

例如

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

【讨论】:

  • 是的,刚刚发现。谢谢。
【解决方案2】:

问题是您在 200906031633 -0300 中缺少秒数。如果我添加秒,它会起作用,如下所示:(200906031633"00" -0300)

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

【讨论】:

    猜你喜欢
    • 2013-09-20
    • 1970-01-01
    • 2015-01-24
    • 2021-04-14
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    相关资源
    最近更新 更多