You need to enable JavaScript to run this app. Java中System.nanoTime()方法对应的时间纪元基准是什么?
优惠活动
大模型
产品
解决方案
定价
更多

Java中System.nanoTime()方法对应的时间纪元基准是什么?

Java System.nanoTime() 返回值纪元基准说明

System.nanoTime() 没有和公共时间锚点绑定的固定纪元基准,它的返回值本质是 JVM进程启动后的纳秒级单调时间,和System.currentTimeMillis()使用的1970年1月1日UTC零点基准完全无关。

核心特性说明

  • 设计目标是做高精度时间间隔测量,比如统计代码段执行耗时,而非获取当前绝对时间
  • 基准值随JVM进程启动动态确定,不同进程、同一机器的不同启动实例返回的基准完全独立,不存在跨进程统一的起始点
  • 你测试时拿到的System.nanoTime()/1000000L返回值31106704,单位为毫秒,换算后约为8.6小时,刚好是你测试时当前JVM进程已经运行的时长
  • 时间单调递增,不会受系统时间修改、NTP时间同步等操作的影响,这也是它比System.currentTimeMillis()更适合做耗时统计的核心原因

你观察到的两个返回值差异完全符合预期:
System.currentTimeMillis()返回的1626111981278是1970年UTC零点到你测试时点的毫秒数,换算后对应2021年7月13日,和nanoTime()的计算逻辑完全不重合,自然存在极大差值。

注意事项

  • 不要对不同JVM进程返回的nanoTime()做差值计算,基准不一致会导致结果完全错误
  • 不要将nanoTime()的返回值转换为绝对时间使用,结果没有任何实际意义

内容的提问来源于stack exchange,提问作者ope

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 00:03:04