首页 > 解决方案 > 日期总是得到不同的 getTime()

问题描述

我想知道为什么我总是以毫秒为单位得到这个日期之间的差异。

任何想法 ?

这是输出:

date = 1572794103293 ms 
date2 = 1572794103341 ms  
date3 = 1572794103341 ms  
date4 = 1572794103341 ms

这是代码:

Date date = createDate();
Date date2 = createDate();
Date date3 = createDate();
Date date4 = createDate();
System.out.println(date.getTime());
System.out.println(date2.getTime());
System.out.println(date3.getTime());
System.out.println(date4.getTime());

private static Date createDate() {
      Calendar c = GregorianCalendar.getInstance();
        c.set(2019, Calendar.NOVEMBER, 03, 16, 15, 03);
        return c.getTime();
}

标签: javadate

解决方案


除了评论和 AxelH 的回答提到Calendar实例的毫秒数不会被 改变这一事实之外,Calendar.set仍然有好奇心,你得到相同的值date2date3date4,但不同的值date

这是因为第一次调用createDate()JVM 时必须初始化Date类,这发生在Calendar c初始化之后。

因此,第一次调用比连续调用需要更多时间,您可以将其视为与其他 3 个实例c.getTime()的值之间的差异。date

如果您new Date()在第一次调用之前添加调用 to createDate(),则每个值之间的差异应该相同。

请注意,这并不能解决您的问题,如果您的机器足够快,它只会隐藏它。这只是对您获得的特定值的解释。


推荐阅读