【发布时间】:2012-01-13 16:19:17
【问题描述】:
大家好,我有一段代码如下所示:
public class Test {
public static void main(String args[]) {
long a = System.currentTimeMillis(); // line 1
long b = System.currentTimeMillis(); // line 2
assert b - a >= 0;
long y = System.nanoTime(); // line 5
long z = System.nanoTime(); // line 6
}
}
所以IERS 表示下一个闰秒将在 2012 年 6 月 30th 11:59.9 之后立即发生。
我想知道我是否正确地说如果第 1 行在 30th June 2012 11:59.9 转为 1st 2012 年 7 月 00:00.0,
并且第 2 行在第 1 行之后 0.1 秒运行,
b - a 的结果可能是否定? (-900 毫秒)
如果是这样的话,如果第 5 行在 30th June 2012 11:59.9 转为 1 后 0.9 秒运行,是不是真的st 2012 年 7 月 00:00.0,
第 6 行在第 5 行之后 0.1 秒运行,
z - y 的结果可能是否定? (-900,000,000 纳秒?)
【问题讨论】:
-
您是在问闰秒是否会改变单调递增时钟的工作方式?你预计会发生什么?
-
为什么这些是负面的?你找到了让时光倒流的方法吗?除非在这两个调用之间调整系统时钟,否则时间将为正或空(取决于系统时钟的准确性)
-
@EdwardThomson 是的,我想知道闰秒是否会影响 System.currentTimeMillis() 的结果,因为每次闰秒发生时,POSIX 时间向后一秒跨度>
-
@JBNizet 因为只要出现闰秒,POSIX 时间就会回到过去,如表中所示插入 UTC 闰秒时跨午夜的 Unix 时间:en.wikipedia.org/wiki/Unix_time
-
那么为什么不问那个问题,而不是希望人们点击链接和/或记住闰秒的时间安排。 ;)