我正在尝试使用ZonedDateTime对象的以下行来解析格式为“ yyyy-MM-dd'T'HH:mm:ssZ”的ISO8601时间字符串:
ZonedDateTime date = ZonedDateTime.parse("2021-02-19T14:32:12+0000", DateTimeFormatter.ISO_ZONED_DATE_TIME);
但是这样做时出现以下错误:
java.time.format.DateTimeParseException: Text '2021-02-19T14:32:12+0000' could not be parsed at index 19
我无法想象这是不允许的,因为+符号是解析的有效字符。任何人都可以协助解决这里的问题吗?
这是因为 请参阅编辑,并非在所有情况下都需要它。这是因为偏移量必须包含冒号。ISO_ZONED_DATE_TIME
期望偏移量和区域。
参见文档。
使用DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssxx", Locale.ROOT)
代替。另外,您可以使用DateTimeFormatterBuilder
:
new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_DATE_TIME)
.appendPattern("xx")
.toFormatter(Locale.ROOT);
仅阅读Javadoc的摘要片段显然还不够。如ISO_ZONED_DATE_TIME
注释中所述,区域ID不是严格要求的。那里的第二个要点提到了它:“如果区域ID不可用或者是ZoneOffset,则格式已完成”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句