有一些参考文献提到Java忽略了闰秒:
Do Java system milliseconds take account of leap seconds?
JDK-4272347 : (cal/tz) support leap seconds ticket
然而,文件Timezone Data Versions in the JRE Software提到:
根据IERS Bulletin C 49,新的闰秒2015-06-30 23:59:60 UTC。
第三方Java库Time4J使用它自己的闰秒列表。
如果Java忽略了java的tzupdater工具为什么会增加闰秒?
答案 0 :(得分:2)
我现在已经仔细研究了TZUPDATER和IANA的发行说明(在其实验地点github / eggert / tz):
TZUPDATER说:
以美国/坎昆为代表的墨西哥金塔纳罗奥州将会 从DST的中部时间转移到没有DST的东部时间 2015-02-01 02:00智利不会在4月或4月改变时钟 其后;它的新标准时间将是其旧的夏令时 时间。这会影响美国/圣地亚哥,太平洋/复活节和 南极洲/帕尔默。新的闰秒2015-06-30 23:59:60 UTC按照 IERS Bulletin C 49。
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-question的回答中,我也指出了最新的相关mail statement,其中Threeten项目负责人最终放弃了暂时可用的计划支持闰秒。所以你对Java-8的乐观态度是不合理的。
顺便说一句,Time4J的最新版本v2.3现在可以部署IANA-TZDB中包含的闰秒信息,就像你从TZUPDATER工具那里得到的那样。