2015年6月30日的
leap second will occur.不同的操作系统似乎处理这种情况不同。在我的特殊情况下,我们运行一个Red Hat 6.4系统和自定义的Java(JDK 1.7)软件,它是非常依赖于时间的。根据一些
recent Red Hat released information我发现,我们的系统的NTP守护进程将确保操作系统自动处理闰秒通过重复23:59:59两次。
我的问题是:如果我有一个长期运行的JDK 1.7进程,它是如何知道闰秒发生?我的意思是,Java如何最终知道IERS人决定插入一个闰秒? Date文档似乎表明意识到闰秒,但似乎毫无裨益的模糊。我可以假定JDK,当构造适当的Date对象或调用Calendar.getInstance()时,它是一个传递到底层操作系统的日期时间处理,以获得适当的“实时”时间值? (在我的情况下,听起来像重复第二个23:59:59,因为这是操作系统将如何处理它)。
这取决于你的jdk版本。例如,如果您正在运行更新80,您可以检查
the release notes:
JDK 7u80 contains IANA time zone data version 2015a. For more information,refer to Timezone Data Versions in the JRE Software.
然后按照链接到timezone data versions,找到2015a。然后按照the link to TZ Updater version1.4.11:
New leap second 2015-06-30 23:59:60 UTC as per IERS Bulletin C 49. (Thanks to Tim Parenti.)
它似乎没有被包括在前,所以如果你运行一个旧版本的JDK 7,你可能不会得到调整。关于它如何在内部工作的更多信息可用here。
说实话,我从来没有测试过它在实践中如何工作。