【问题标题】:Find time-difference between epoch and current time查找纪元和当前时间之间的时间差
【发布时间】:2013-12-10 14:56:33
【问题描述】:

当使用 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

我该怎么做?

【问题讨论】:

  • 减去它们?我不明白你的问题。
  • 它们是数字...减去它们?
  • System.nanoTime() 给出相对于任意时间点的时间戳,用于表示经过的时间,而不是明确的预定义时间点。

标签: java time epoch nanotime


【解决方案1】:

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

来自the documentation

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

【讨论】:

  • 复制粘贴问题...“263 纳秒”应该是“2^63 纳秒”。
  • @T.J.Crowder - 谢谢,它不允许我在 6 个字符以下进行编辑,所以我不能只添加 ^,而且我不知道格式化技巧的用途上标。
  • @dcsohl: <sup>63</sup> :-)
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2018-06-22
    • 2015-05-25
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多