Joda时间解析不同的日期时间格式
Joda time parse different datetime format
我有下一个字符串:2000-01-01T01:01:01
和 2000-01-01T01:01:01.000Z
是否可以使用 ISODateTimeFormat
来解析两个日期?
您可以使用 dateTimeParser()。它的描述承诺:
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 只允许设置通过 formatter.withZone(...)
的用户定义区域优先于文本输入中的任何可用偏移信息 - 不理想)。
我有下一个字符串:2000-01-01T01:01:01
和 2000-01-01T01:01:01.000Z
是否可以使用 ISODateTimeFormat
来解析两个日期?
您可以使用 dateTimeParser()。它的描述承诺:
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 只允许设置通过 formatter.withZone(...)
的用户定义区域优先于文本输入中的任何可用偏移信息 - 不理想)。