Java Joda time解析不同的日期时间格式

Java Joda time解析不同的日期时间格式,java,jodatime,Java,Jodatime,我有下一个字符串:2000-01-01T01:01:01和2000-01-01T01:01:01.000Z 是否可以使用ISODateTimeFormat解析这两个日期?您可以使用。其描述承诺: It accepts formats described by the following syntax: datetime = time | date-opt-time time = 'T' time-element [offset] date-op

我有下一个字符串:
2000-01-01T01:01:01
2000-01-01T01:01:01.000Z
是否可以使用
ISODateTimeFormat
解析这两个日期?

您可以使用。其描述承诺:

It accepts formats described by the following syntax: 
 datetime          = time | date-opt-time
 time              = 'T' time-element [offset]
 date-opt-time     = date-element ['T' [time-element] [offset]]
 date-element      = std-date-element | ord-date-element | week-date-element
 std-date-element  = yyyy ['-' MM ['-' dd]]
 ord-date-element  = yyyy ['-' DDD]
 week-date-element = xxxx '-W' ww ['-' e]
 time-element      = HH [minute-element] | [fraction]
 minute-element    = ':' mm [second-element] | [fraction]
 second-element    = ':' ss [fraction]
 fraction          = ('.' | ',') digit+
 offset            = 'Z' | (('+' | '-') HH [':' mm [':' ss [('.' | ',') SSS]]])
测试:

    String s1 = "2000-01-01T01:01:01.000Z";
    String s2 = "2000-01-01T01:01:01";

    DateTime dt1 = ISODateTimeFormat.dateTimeParser().withOffsetParsed().parseDateTime(s1);
    System.out.println(dt1); // 2000-01-01T01:01:01.000Z

    DateTime dt2 = ISODateTimeFormat.dateTimeParser().withOffsetParsed().parseDateTime(s2);
    System.out.println(dt2); // 2000-01-01T01:01:01.000+01:00 (using default zone)
当然,没有偏移量的字符串在某种程度上是可疑的。你决定如何分别解释结果。由于文本输入的某些部分缺少此信息,因此在哪个时区

就我个人而言,我希望Joda Time能够优先考虑解析的偏移量信息,但如果文本输入没有偏移量,则选择用户定义的时区偏移量(Joda Time只允许通过
格式化程序设置用户定义的区域。withZone(…)
在文本输入中,哪一个将优先于任何可用的偏移量信息-不理想)