如何将 RFC 3339 日期字符串解析为 ZondeDateTime?
How can I parse RFC 3339 date string into ZondeDateTime?
问题:
我应该解析一个 RFC3339 date string. It works fine with 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 不对您想要的内容提供任何直接支持。就在今天早些时候,我写了 ,其中也有一个关于解析闰秒的部分。不过说到做到了。
所以还有手解析。我会按照这些思路尝试一些事情:使用正则表达式来检测第二个是否为 60。如果是:用 59 替换它。解析。转换为 UTC。如果 UTC 时间是 23:59:59,假设原始字符串中有一个有效的闰秒;否则字符串不表示有效时间。
我建议在闰秒的情况下,最大 60.999999999 的值是有效的。因此,要检测是否有 60,您需要查看分钟后冒号(如果有)后面的内容,而不取决于是否也有小数部分。
问题:
我应该解析一个 RFC3339 date string. It works fine with 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 不对您想要的内容提供任何直接支持。就在今天早些时候,我写了
所以还有手解析。我会按照这些思路尝试一些事情:使用正则表达式来检测第二个是否为 60。如果是:用 59 替换它。解析。转换为 UTC。如果 UTC 时间是 23:59:59,假设原始字符串中有一个有效的闰秒;否则字符串不表示有效时间。
我建议在闰秒的情况下,最大 60.999999999 的值是有效的。因此,要检测是否有 60,您需要查看分钟后冒号(如果有)后面的内容,而不取决于是否也有小数部分。