我需要找到两个时间值之间的差异,当使用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
。
我该怎么做?
答案 0 :(得分:4)
这是不可能的。你对纳米时代及其目的有误解。
此方法只能用于测量经过的时间而不是 与系统或挂钟时间的任何其他概念有关。价值 返回表示自固定但任意时间以来的纳秒 (也许在未来,所以价值观可能是负面的)。这种方法 提供纳秒级精度,但不一定是纳秒级 准确性。不保证值的变化频率。 连续调用的差异大于约 292年(2 63 纳秒)将无法准确计算经过的时间 由于数字溢出。
答案 1 :(得分:1)
你无法比较它们;它们是苹果和橙子,不是以相同的比例或相同的时间点测量的。特别是,虽然currentTimeMillis()
是自1970年1月1日00:00:00Z以来的毫秒数,但nanoTime()
是从...测量的,可能是您的机器或JVM的启动时间,或任何东西。
如果你同时调用这两种方法并注意相关性,那么你可以稍后进行类似的相关,但这是唯一的方法,并不能保证精确。