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

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

Susan Sarandon
Susan Sarandon原创
2024-11-03 08:19:02505浏览

How to Parse ISO 8601 String with Missing Colon in Offset in Java 8?

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

尝试使用以下命令解析 ISO 8601 格式的字符串时会出现问题使用 Java 8 中新的日期时间 API 缺少冒号的偏移量(例如“2018-02-13T10:20:12.120 0000”)。

解决方案

直到错误修复(Java 8)

使用解决方法:

  • 黑客:在输入字符串中插入冒号:
<code class="java">String input = "2018-02-13T10:20:12.120+0000".replace( "+0000" , "+00:00" );
OffsetDateTime odt = OffsetDateTime.parse( input );</code>
  • 显式格式模式:
<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>

修复错误时:

要在没有解决方法的情况下进行解析:

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

附加说明:

  • 避免遗留日期时间类,如 java.util.Date 和 SimpleDateFormat。
  • 使用 OffsetDateTime 进行偏移量,使用 Instant 进行偏移量UTC 值。
  • 对于时区转换,请使用 ZonedDateTime。
  • 查看 Stack Overflow 以获取更多示例和信息。

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

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