0

当使用 System.Time 获取其中一个时间值时,我需要找到两个时间值之间的差异。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

我该怎么做呢?

4

2 回答 2

4

这是不可能的。你对纳米时间及其用途有误解。

文档中

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

于 2013-12-10T15:00:11.387 回答
1

你无法比较它们;它们是苹果和橙子,不是在同一尺度或相对于同一时间点测量的。特别是,自 1970 年 1 月 1 日currentTimeMillis()00:00:00Z 以来的毫秒数,nanoTime()是从……嗯,可能是你的机器、你的 JVM 或任何东西的启动时间。

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

于 2013-12-10T15:01:07.930 回答