2013-12-10 59 views
0

我需要找出两个时间值之间的差异,当使用系统获取其中的一个时间值时。 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查找历元与当前时间之间的时差

我该怎么做?

+1

减去它们?我不明白你的问题。 – 2013-12-10 14:58:31

+0

他们是数字...减去他们? –

+0

为什么不减? –

回答

4

这是不可能的。您对纳米结构及其目的有误解。

the documentation

此方法仅可用于测量经过时间,而不是 有关的系统或挂钟时间的任何其它概念。返回的值 表示自一些固定但任意时间 (可能在将来,因此值可能为负)返回的纳秒。这种方法 提供了纳秒级精度,但不一定是纳秒级 的准确度。没有保证值的变化频率。 跨度大于约 292年(2 纳秒)的连续调用差异将不会准确计算由于数值溢出而导致的已用时间 。

+1

复制粘贴问题...“263纳秒”应该是“2^63纳秒”。 – dcsohl

+0

@ T.J.Crowder - 谢谢,它不会让我在6个字符以下进行编辑,所以我不能只添加一个'^',而且我不知道上标的格式化技巧。 – dcsohl

+1

@dcsohl:'':-) –

1

你不能比较它们;它们是苹果和桔子,不是以相同的比例或相同的时间点来衡量。尤其是,currentTimeMillis()从1970年1月1日00:00:00Z开始为毫秒,而nanoTime()则从...开始测量,可能是您的机器或JVM的启动时间或任何事情。

如果您同时调用两种方法并记下相关性,稍后可以执行类似的相关性,但这是实现它的唯一方法,并且不能保证精确。

相关问题