繁体   English   中英

Java 8 Date and Time API - 解析yyyy-MM-dd'T'HH:mm:ss.SSSZ

[英]Java 8 Date and Time API - parse yyyy-MM-dd'T'HH:mm:ss.SSSZ

我正在尝试以ISO8601格式解析日期:

YYYY-MM-dd'T'HH:MM:ss.SSSZ

我是否正确无法使用java.time.format.DateTimeFormatter中定义的任何默认格式对其进行解析

例如,ISO_OFFSET_DATE_TIME将仅解析:

YYYY-MM-dd'T'HH:MM:ss.SSSZZ

样品:

yyyy-MM-dd'T'HH:mm:ss.SSSZ
2015-04-29T10:15:00.500+0000

yyyy-MM-dd'T'HH:mm:ss.SSSZZ
2015-04-29T10:15:00.500+00:00

顺便说一句:我知道我可以定义自己的格式化程序,而不是问题。 只是想确保我没有遗漏一些东西,因为JodaISODateTimeFormat能够解析两者:

 org.joda.time.format.DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime();
 DateTime dateTime = dateTimeFormatter.parseDateTime("2015-04-29T10:15:00.500+0000");

我不确定这是你的预期答案。

方法1

使用Instant解析

Instant.parse("2015-06-28T10:13:14.743Z");

方法2

从给定模式中删除'Z'后,给定的输入格式等同于ISO_DATE_TIME格式yyyy-MM-dd'T'HH:mm:ss.SSSZ

然后我们可以使用ISO_DATE_TIME解析它

 text = "2015-06-28T10:13:14.743"
 LocalDateTime.parse(text,DateTimeFormatter.ISO_DATE_TIME)

您是正确的,因为它似乎与任何默认格式都不匹配,因此您需要使用java.time.format.DateTimeFormatterBuilder构建格式。

Joda将ISO8601格式用于默认的ISODateTimeFormat。 因此,根据文档http://www.w3.org/TR/NOTE-datetime,Joda将无法解析您的格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM