You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何多次调用createDate()生成的Date.getTime()结果存在毫秒差异?

为什么多次创建的Date对象getTime()有毫秒差异?

嘿,这个问题我之前调试代码时也碰到过,其实核心原因很简单——每次调用createDate()方法本身是需要消耗时间的,系统时钟会在这期间前进几毫秒!

咱们来拆解一下:

  • Java里的java.util.Date(你用的应该是这个)的getTime()返回的是从1970-01-01 UTC到对象创建时刻的毫秒数,它直接依赖系统的当前时钟。
  • 你连续调用了四次createDate(),哪怕这个方法只是简单的return new Date();,JVM执行方法调用、分配对象内存这些操作都需要一点点CPU时间。第一次调用和第二次之间的耗时让系统时钟跳了48毫秒(从1572794103293到1572794103341),而后面三次调用因为执行得太快,系统时钟还没来得及更新,所以返回了同一个毫秒值。

如果你的createDate()方法里还有额外逻辑(比如解析日期字符串、做时间计算),那这个时间差会更明显。

解决办法:如果需要一致的时间戳

如果你希望所有Date对象的时间戳完全相同,可以先一次性获取当前时间,再复用这个值:

long currentTimestamp = System.currentTimeMillis();
Date date = new Date(currentTimestamp);
Date date2 = new Date(currentTimestamp);
Date date3 = new Date(currentTimestamp);
Date date4 = new Date(currentTimestamp);
// 现在所有date的getTime()结果都会完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:21:35