首页  >  文章  >  Java  >  如何解析 Java 8 日期偏移量中缺少冒号的 ISO 8601 字符串?

如何解析 Java 8 日期偏移量中缺少冒号的 ISO 8601 字符串?

Patricia Arquette
Patricia Arquette原创
2024-11-04 11:16:29680浏览

How to Parse an ISO 8601 String with a Missing Colon in the Offset to Java 8 Date?

解析在 Java 8 日期偏移量中缺少冒号的 ISO 8601 字符串

问题:

Java 8 的 ZonedDateTime.parse() 方法无法解析偏移量中缺少冒号的 ISO 8601 格式的日期字符串,例如“2018-02-13T10:20:12.120 0000”。

解决方案:

错误修复之前(Java 8 到 121):

使用具有自定义模式的 DateTimeFormatter 来指定缺少的冒号在偏移量中:

<code class="java">String input = "2018-02-13T10:20:12.120+0000";
DateTimeFormatter f = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSX");
OffsetDateTime odt = OffsetDateTime.parse(input, f);</code>

修复错误时:

只需使用不带模式的 ISO 8601 字符串调用 OffsetDateTime.parse() 即可:

<code class="java">OffsetDateTime odt = OffsetDateTime.parse("2018-02-13T10:20:12.120+0000");</code>

详细信息:

  • OffsetDateTime 类表示与 UTC 之间存在偏移的日期,该偏移量适合输入字符串。
  • 通过默认情况下,java.time 使用 ISO 8601 格式进行解析,但它需要偏移量中的冒号。
  • DateTimeFormatter 允许自定义,使您能够指定冒号的存在。
  • 到避免歧义,建议在偏移量中使用冒号,始终提供小时和分钟(即使为零),并在一位数分钟的左侧填充零。

以上是如何解析 Java 8 日期偏移量中缺少冒号的 ISO 8601 字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn