gpt4 book ai didi

java - 如何将 RFC 3339 日期字符串解析为 ZonedDateTime?

转载 作者:行者123 更新时间:2023-11-30 01:53:20 27 4
gpt4 key购买 nike

问题:

我应该解析 RFC3339日期字符串。它与 ISO_ZONED_DATE_TIME 配合得很好:

ZonedDateTime.parse("1985-04-12T23:20:50.52Z", ISO_ZONED_DATE_TIME);
ZonedDateTime.parse("1996-12-19T16:39:57-08:00", ISO_ZONED_DATE_TIME);

假设我将解决未知本地偏移约定的问题,只是为了不接受这些日期。但我仍然遇到一些像这样的极端情况的问题:

  1990-12-31T23:59:60Z

This represents the leap second inserted at the end of 1990.

  1990-12-31T15:59:60-08:00

This represents the same leap second in Pacific Standard Time, 8
hours behind UTC."1990-12-31T15:59:60-08:00"

问题:

  • 如何解析它以避免丢失任何秒数?

更新:

  • 是否存在任何适合的 ZonedDateTime 替代方案RFC3339?

最佳答案

java.time 不为您想要的东西提供任何直接支持。今天早些时候我写了this answer其中还有一个关于解析闰秒的部分。但所说的都有了。

所以还剩下手工解析。我会尝试以下方法:使用正则表达式来检测第二个是否为 60。如果是:用 59 替换它。解析。转换为 UTC。如果 UTC 时间为 23:59:59,则假设原始字符串中存在有效的闰秒;否则该字符串不表示有效时间。

我建议在闰秒的情况下,最大 60.999999999 的秒值是有效的。因此,要检测是否有 60,您需要查看分钟后冒号(如果有)后面的内容,而不是取决于是否也有小数部分。

关于java - 如何将 RFC 3339 日期字符串解析为 ZonedDateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55316869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com