【问题标题】:Java time ahead of linux time (leap second)Java 时间领先于 linux 时间(闰秒)
【发布时间】:2015-03-25 11:27:11
【问题描述】:

我已将 Linux 系统日期更改为 Sat Jun 30 23:50:00 2012。 更改日期后,我正在运行一个简单的 java 程序来记录系统日期。 问题是:Java 的日志记录比 Linux 系统时间早 25 秒。 例如: Java 日志:2012-07-01 00:02:15 INFO Scheduler:19 - Sun Jul 01 00:02:15 GMT 2012 Linux 时间:2012 年 7 月 1 日星期日 00:01:50 GMT 两者都是格林威治标准时间!

我这样做是为了分析闰秒问题。 我在 /etc/localtime 中检查了闰秒的总数,它是 25。 zdump -v /etc/本地时间 | 59:60 | wc -l 25

我重新启动了系统,也重新启动了 ntp 服务器,但仍然有 25 秒的差异!

我正在使用 SUSE Linux Enterprise Server 11 SP3 (x86_64) 和 JAVA 1.7

请帮助我了解什么是错的?以及如何解决这个问题?

【问题讨论】:

    标签: java linux leap-second


    【解决方案1】:

    您需要在 JRE 中更新您的时区数据:

    【讨论】:

    • 我尝试了上述选项,但仍然遇到同样的问题!以毫秒为单位的 Java 时间与以毫秒为单位的 Unix 时间相同。但是 java 中的 new Date() 显示了 25 秒以上!当我将时区更改为 UTC 时,一切正常。 (我检查了UTC,没有闰秒)
    • 您在哪个时区遇到问题?
    • 我遇到了 GMT 时区问题。
    • Oracle 没有部署 TZDB 中包含的闰秒信息,因此即使 Oracle 盲目地将 TZDB 新闻复制到自己的 TZ-Updater-versions 公告中,建议的过程也完全没用。另请参阅SO-post
    猜你喜欢
    • 1970-01-01
    • 2016-02-15
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多