为什么日期转换返回不同的时间戳?

wdm*_*981 1 java calendar date unix-timestamp

我将GregorianCalendar实例转换为Date以获取Unix时间戳。

但是我想知道为什么同一日期每次都会返回不同的Unix时间戳。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

Calendar calendar = new GregorianCalendar();
calendar.set(2018, 0, 1, 0,0,0);
System.out.println(sdf.format(calendar.getTime()));
Date date = calendar.getTime();

System.out.println(sdf.format(date));
System.out.println(date.getTime());
Run Code Online (Sandbox Code Playgroud)

日期本身是正确的,并且始终相同"2018/01/01 00:00:00"。但是为什么每次Unix时间戳都不同?例如,这些是执行5次后的值。

1514761200624
1514761200618
1514761200797
1514761200209
1514761200132
Run Code Online (Sandbox Code Playgroud)

小智 5

创建新日历时,它包含当前日期和时间。之后,您将更新除毫秒以外的所有字段。如您所见,所有输出中仅最后3个数字有所不同,这是执行时间的毫秒数。