java - 日期总是得到不同的 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();
}
解决方案
除了评论和 AxelH 的回答提到Calendar
实例的毫秒数不会被 改变这一事实之外,Calendar.set
仍然有好奇心,你得到相同的值date2
,date3
和date4
,但不同的值date
。
这是因为第一次调用createDate()
JVM 时必须初始化Date
类,这发生在Calendar c
初始化之后。
因此,第一次调用比连续调用需要更多时间,您可以将其视为与其他 3 个实例c.getTime()
的值之间的差异。date
如果您new Date()
在第一次调用之前添加调用 to createDate()
,则每个值之间的差异应该相同。
请注意,这并不能解决您的问题,如果您的机器足够快,它只会隐藏它。这只是对您获得的特定值的解释。
推荐阅读
- python-3.x - Pygame set_caption 不工作 [python3,Ubuntu]
- laravel - 在不实例化整个应用程序的情况下运行 lumen/laravel
- java - MongoDB Panache 更新文档中的嵌套对象
- c# - 为什么不能确定这种一对一关系的孩子/依赖方?
- mysql - MySQL 每次都会在几分钟后停止工作
- java - 实现接口的静态方法
- python - 在循环内使用 scipy.interpolate 性能下降
- php - 如何从php中的最后一个元素开始迭代foreach循环?
- javascript - createList 在 Mirage js 中不拾取关系
- airflow - Airflow find DAG Runs with specific conf