繁体   English   中英

使用时区偏移值解析 ZonedDateTime 字符串

[英]Parsing a ZonedDateTime String with timezone offset value

我正在尝试使用 ZonedDateTime object 的以下行解析格式为“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 则格式完整”

暂无
暂无

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

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