veh*_*mar 11 java java-8 java-time
我正在尝试以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
Run Code Online (Sandbox Code Playgroud)
顺便说一句:我知道我可以定义自己的格式化程序,而不是问题.只是想确保我不会失去了一些东西作为ISODateTimeFormat的乔达能够解析两种:
org.joda.time.format.DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTime();
DateTime dateTime = dateTimeFormatter.parseDateTime("2015-04-29T10:15:00.500+0000");
Run Code Online (Sandbox Code Playgroud)
小智 6
您永远不应该被那些烦人的日期格式所困扰。
有一个新的库dateparser。
它可以自动识别任何字符串,并将其正确解析为Date、Calendar、LocalDateTime、OffsetDateTime。
有了它,您不必准备任何适当的模式,例如yyyy-MM-dd'T'HH:mm:ss.SSSZ或yyyy-MM-dd'T'HH:mm:ss.SSSZZ:
Date date = DateParserUtils.parseDate("2015-04-29T10:15:00.500+0000");
Calendar calendar = DateParserUtils.parseCalendar("2015-04-29T10:15:00.500Z");
LocalDateTime dateTime = DateParserUtils.parseDateTime("2015-04-29 10:15:00.500 +00:00");
Run Code Online (Sandbox Code Playgroud)
一切正常,请尽情享受。
我不确定这是你的预期答案.
方法1
使用Instant解析
Instant.parse("2015-06-28T10:13:14.743Z");
Run Code Online (Sandbox Code Playgroud)
方法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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14054 次 |
| 最近记录: |