解析具有时区偏移值的ZonedDateTime字符串

伊布斯先生

我正在尝试使用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

我无法想象这是不允许的,因为+符号是解析的有效字符。任何人都可以协助解决这里的问题吗?

MC皇帝

这是因为 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法将字符串解析为具有时区偏移量的时间,其中包含RFC3339带有看似矛盾的错误

解析具有冲突区域ID和偏移量的字符串时ZonedDateTime的行为

使用strptime将字符串转换为具有时区偏移的python日期类型对象

将具有时区值的日期时间字符串转换为印度标准时间(IST)

Java:ZonedDateTime-解析不带时区的时间字符串

Spark将字符串解析为带有时区的时间戳

在Python中解析带有时区缩写名称的日期/时间字符串?

在PHP中解析带有时区的日期时间字符串

将字符串解析为DateTime,有时会增加1小时(时区)

将字符串解析为带有时区的 postgresql 时间戳

将具有时区的字符串转换为utc datetime对象python

Python从偏移字符串获取时区

从含有字符串毫秒解析ZonedDateTime

数据框-具有时间值的字符串类型列的平均值

将日期值(字符串)转换为具有不同时区的时间戳

解析包含“ T”和+时区偏移量的日期字符串

从没有时区名称的时区获取时区偏移值

将具有时间值“ 0:00”的字符串转换为十进制/双精度值?

将带有时区的时间日期字符串转换为 utc python

如何将带有时区的字符串转换为Unix时间戳Python?

将带有时区的python datetime转换为字符串

将DateTime格式化为带有时区的本地字符串

在node.js中转换没有时区的日期字符串

无法解决异常:“ ValueError:使用具有UTC偏移量的日期字符串建立索引时,索引必须能够识别时区”

如何将不知道的日期时间字符串转换为具有时区的已知日期时间对象?

解析时区日期字符串java

使用NodaTime获取时区(字符串)的偏移分钟

解析字符串以获取具有换行符的值

使用Jackson的ObjectMapper解析具有动态类型(字符串或对象)的值的JSON