Java CurrentTimeMilli正在更改,有什么可能的原因吗?

Java CurrentTimeMilli正在更改,有什么可能的原因吗?,java,Java,当System.CurrentTimeMilli发生更改时,可能的原因是什么 假设currentTimeMillis仅在2分钟后的1分钟和2分钟小时内更改。与日光节约有关 一个可能的原因是时间与正确的时间同步,另一个可能的原因是什么?系统。currentTimeMillis()根据其文档,返回当前时间与UTC 1970年1月1日午夜之间的差值(以毫秒为单位)。很明显,它一直在快速变化。需要注意的是,它指的是挂钟,可以随时调整 也就是说,如果某人或某物(可能是自动NTP同步器)简单地调整计算机的时

当System.CurrentTimeMilli发生更改时,可能的原因是什么

假设currentTimeMillis仅在2分钟后的1分钟和2分钟小时内更改。与日光节约有关


一个可能的原因是时间与正确的时间同步,另一个可能的原因是什么?

系统。currentTimeMillis()
根据其文档,返回当前时间与UTC 1970年1月1日午夜之间的差值(以毫秒为单位)。很明显,它一直在快速变化。需要注意的是,它指的是挂钟,可以随时调整


也就是说,如果某人或某物(可能是自动NTP同步器)简单地调整计算机的时钟或日期,它将跳变一个小时,因为任意数量。如果你需要测量一件事情需要多长时间,你应该使用一个计时器,例如保证单调变化的
System.nanoTime()

  • 您正在自己编写自1970年1月1日00:00UTC以来的毫秒转换,并且没有发现错误(我们需要代码)
  • 当返回值实际跳变为3600000时,有时会发生这种跳变(只有在更改系统时钟或使用NTP更新时间时才会发生这种跳变)

我希望
currentTimeMillis()
会定期更改。。。你知道,要跟上潮流。大概你有不同的想法-也许你可以告诉我们什么?呃,现在比过去晚了?你说的改变是什么意思-它将永远改变-它是基本的时钟时间。如果你多次调用它,你会得到不同的结果。仅在2次调用后,currentTimeMillis从6:00更改为7:02minutes@user705414:
System.currentTimeMillis()
返回一个
long
。如果你在某处记录6:00,那么很明显存在转换-转换很可能应用了夏令时等。请不要让我们从你身上拖出每个细节-阅读并更新问题,以便它实际上是可以回答的…因为它是以UTC度量的,不受夏令时的影响。@Joona,你能让我知道你偶尔是什么意思吗?@Joona,你的意思是我必须使用纳米时间而不是CurrentTimeMillis@user705414:是的。使用
System.nanoTime()
,更准确地说,使用连续
System.nanoTime()
读数之间的差值:只要差值小于292年(之后差值溢出),就保证是递增的
currentTimeMillis()
受挂钟的影响,因此不提供这种单调性保证。