我知道 System.currentTimeMillis()
给出了自纪元以来的毫秒数,它对系统的挂钟时间很敏感。我也知道在测量时间的程序中使用 System.currentTimeMillis()
来计算耗时是不可取的。
Java 库为此提供了 System.nanoTime()
。
我有两个关于 System.currentTimeMillis()
的具体问题:
- 它会受到闰秒调整的影响吗?我认为答案是是,因为系统的挂钟时间会因为闰秒而调整。
- 当DST(夏令时)打开/关闭时它会受到影响吗?当时间突然从 23:59 变为 2:00 时会发生什么?由于系统时钟实际上发生了变化,我认为答案还是是,但我想与社区核实一下。
最佳答案
System.currentTimeMillis()
返回的值是自纪元以来经过的毫秒数。这个毫秒数就是:毫秒数。
假设在某一天,由于夏令时,您所在的国家/地区决定立即从 1:00 到 2:00。这是否意味着在 1:00 和 2:00 之间已经过去了 1 小时?第 0 毫秒已经过去。贵国只是决定将毫秒值 X 表示为 1:00,而毫秒 X + 1 表示为 2:00。时间的表示不会改变毫秒的含义。
关于java - System.currentTimeMillis() 返回的值是否受夏令时和闰秒调整的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18812237/