有一些参考文献提到 Java 忽略了闰秒:
考虑到新引入的闰秒,一个 1 岁的 (java) 库如何正确执行 UTC 时间格式
然而,JRE Software 中的文档时区数据版本提到:
根据 IERS Bulletin C 49 的新闰秒 2015-06-30 23:59:60 UTC。
第 3 方 Java 库 Time4J 使用它自己的闰秒列表。
如果 Java 忽略了闰秒,为什么 Java 的 tzupdater 工具会添加闰秒?
有一些参考文献提到 Java 忽略了闰秒:
考虑到新引入的闰秒,一个 1 岁的 (java) 库如何正确执行 UTC 时间格式
然而,JRE Software 中的文档时区数据版本提到:
根据 IERS Bulletin C 49 的新闰秒 2015-06-30 23:59:60 UTC。
第 3 方 Java 库 Time4J 使用它自己的闰秒列表。
如果 Java 忽略了闰秒,为什么 Java 的 tzupdater 工具会添加闰秒?
我现在仔细查看了 TZUPDATER 和 IANA 的发行说明(在其实验位置 github/eggert/tz):
TZUPDATER 说:
以 America/Cancun 为代表的墨西哥金塔纳罗奥州将于 2015 年 2 月 1 日凌晨 02:00 从有夏令时的中部时间改为无夏令时的东部时间。智利将不会在四月或之后更改时钟;它的新标准时间将是它的旧夏令时。这会影响美国/圣地亚哥、太平洋/复活节和南极洲/帕尔默。根据 IERS Bulletin C 49 的新闰秒 2015-06-30 23:59:60 UTC。
IANA 说:
发布 2015a - 2015-01-29 22:35:20 -0800
Changes affecting future time stamps The Mexican state of Quintana Roo, represented by America/Cancun, will shift from Central Time with DST to Eastern Time without DST on 2015-02-01 at 02:00. (Thanks to Steffen Thorsen and Gwillim Law.) Chile will not change clocks in April or thereafter; its new standard time will be its old daylight saving time. This affects America/Santiago, Pacific/Easter, and Antarctica/Palmer. (Thanks to Juan Correa.) New leap second 2015-06-30 23:59:60 UTC as per IERS Bulletin C 49. (Thanks to Tim Parenti.)
从这一点来看,如果 Oracle 员工确实与 Java 发行版相关,则很可能只是在没有考虑内容的情况下完成了复制和粘贴。唯一的变化是删除了作者参考。当然,事实仍然是,在实际的 OpenJDK 和 Oracle-Java 发行版中,没有可以加载这种闰秒数据的代码或位置。
在我自己对这个SO 问题的回答中,我还指出了最新的相关邮件声明,其中 Threeten 项目负责人最终放弃了对闰秒的临时可用计划支持。所以你对 Java-8 的乐观是没有道理的。
顺便说一句,Time4J 的最新版本 v2.3 现在可以部署包含在 IANA-TZDB 中的闰秒信息,正如您对 TZUPDATER-tool 所期望的那样。