Java 8日期和时间:解析没有冒号的ISO 8601字符串中的偏移量
- 论坛
- Java 8日期和时间:解析没有冒号的ISO 8601字符串中的偏移量
12 浏览
Java 8日期和时间:解析没有冒号的ISO 8601字符串中的偏移量
我们尝试解析带有时区偏移的以下ISO 8601日期时间字符串:
final String input = "2022-03-17T23:00:00.000+0000"; OffsetDateTime.parse(input); LocalDateTime.parse(input, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
这两种方法都失败了(这是有道理的,因为OffsetDateTime
也使用DateTimeFormatter.ISO_OFFSET_DATE_TIME
),因为时区偏移中有一个冒号。
java.time.format.DateTimeParseException: Text '2022-03-17T23:00:00.000+0000' could not be parsed at index 23
但根据维基百科,有4种有效的时区偏移格式:
其他框架/语言可以无问题地解析此字符串,例如Javascript的Date()
或Jackson的ISO8601Utils
(他们在这里讨论了此问题)
现在我们可以编写自己的带有复杂正则表达式的DateTimeFormatter
,但在我看来,java.time
库应该能够默认解析此有效的ISO 8601字符串,因为它是有效的。
目前我们使用Jackson的ISO8601DateFormat
,但我们更希望使用官方的java.time
库来处理。你对解决这个问题有什么建议?