找出时期和当前时间之间的时差

时间:2013-12-10 14:56:34

标签: java time epoch nanotime

我需要找到两个时间值之间的差异,当使用System获取其中一个时间值时。 currentTimeMillis()即它the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC,另一个使用System.nanoTime()获取,这意味着它是current value of the running Java Virtual Machine's high-resolution time source, in nanoseconds

我该怎么做?

2 个答案:

答案 0 :(得分:4)

这是不可能的。你对纳米时代及其目的有误解。

来自the documentation

  

此方法只能用于测量经过的时间而不是   与系统或挂钟时间的任何其他概念有关。价值   返回表示自固定但任意时间以来的纳秒   (也许在未来,所以价值观可能是负面的)。这种方法   提供纳秒级精度,但不一定是纳秒级   准确性。不保证值的变化频率。   连续调用的差异大于约   292年(2 63 纳秒)将无法准确计算经过的时间   由于数字溢出。

答案 1 :(得分:1)

你无法比较它们;它们是苹果和橙子,不是以相同的比例或相同的时间点测量的。特别是,虽然currentTimeMillis()是自1970年1月1日00:00:00Z以来的毫秒数,但nanoTime()是从...测量的,可能是您的机器或JVM的启动时间,或任何东西。

如果你同时调用这两种方法并注意相关性,那么你可以稍后进行类似的相关,但这是唯一的方法,并不能保证精确。