有一些参考文献提到Java会忽略闰秒:
考虑到新引入的闰秒,一个1年前的(java)lib如何正确执行UTC时间格式化
Java系统毫秒是否考虑闰秒?
JDK-4272347:(cal/tz)支持闰秒票
然而JRE软件中的时区数据版本文档提到:
新的闰秒2015-06-30 23:59:60 UTC根据IERS公告C 49。
第三方Java库Time4J使用自己的闰秒列表。
如果java忽略了闰秒,为什么java的tzupdater工具会添加闰秒?
我现在已经仔细查看了TZUPDATER和IANA的发布说明(在其实验位置github/eggert/tz):
TZUPDATER表示:
以美国/坎昆为代表的墨西哥金塔纳罗奥州将从有夏令时的中部时间转换到没有夏令时的东部时间2015-02-01 02:00。智利不会在四月或之后它的新标准时间将是原来的夏令时时间这影响了美国/圣地亚哥、太平洋/复活节,以及南极洲/帕尔默。新闰秒2015-06-30 23:59:60 UTC根据IERS公告C49。
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.)
因此,如果内容确实与Java发行版相关,则很可能Oracle员工刚刚完成了复制和粘贴,而没有考虑太多内容。唯一的变化是删除了作者引用。当然,事实仍然是,在实际的OpenJDK和OracleJava发行版中,没有任何代码或位置可以加载这样的闰秒数据。
在我自己对SO问题的回答中,我还提到了最新的相关邮件声明,Threeten项目负责人最终放弃了对闰秒的临时可用计划支持。因此,你对Java-8的乐观态度是不合理的。
顺便说一句,Time4J的最新版本v2.3现在可以部署IANA-TZDB中包含的闰秒信息,正如您从TZUPDATER工具中所期望的那样。