首页 > Java > java教程 > 为什么 Java 8 的 OffsetDateTime 类很难解析带有'0000”这样的偏移量的 ISO 8601 字符串?

为什么 Java 8 的 OffsetDateTime 类很难解析带有'0000”这样的偏移量的 ISO 8601 字符串?

Barbara Streisand
发布: 2024-10-31 07:10:01
原创
522 人浏览过

Why is Java 8's OffsetDateTime class struggling to parse ISO 8601 strings with offsets like

使用 Java 8 Date API 解析 ISO 8601 字符串的困难

尝试解析 ISO 8601 格式的字符串时(“2018- 02-13T10:20:12.120 0000”)使用 Java 8 的 ZonedDateTime 类和预定义的格式模式,用户可能会因偏移量中缺少冒号而遇到解析错误。

罪魁祸首:Java 8 Bug h2>

此解析问题源于 Java 8 中的一个错误,该错误阻止了 OffsetDateTime 类正确解析小时和分钟之间没有冒号的偏移量。此错误会影响“0000”等偏移量,但不会影响“00:00”。

修复该错误之前的解决方法:

(a ) 字符串操作 Hack:

更改输入字符串在解析之前添加缺少的冒号:

(b) 显式 DateTimeFormatter:

使用特定模式定义一个 DateTimeFormatter 来指导解析:

进一步增强功能:

要获得更具适应性的格式化模式,请使用 DateTimeFormatterBuilder:

推荐:

为了简化解析,请确保偏移量始终包含冒号,包含小时和分钟(即使为零),并使用填充零(-05:00 而不是 -5)。

附加说明:

  1. 对于 UTC 格式的值,请使用 Instant:
  1. 获取特定时区的挂钟表示:
  1. 避免遗留日期时间类;请改用 java.time。

以上是为什么 Java 8 的 OffsetDateTime 类很难解析带有'0000”这样的偏移量的 ISO 8601 字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板