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

标签 java date calendar 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());

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

1514761200624
1514761200618
1514761200797
1514761200209
1514761200132

最佳答案

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

关于java - 为什么日期转换会返回不同的时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57059291/

相关文章:

java - 使用 Eventbus 重用事件对象

java - 为什么我的 SimpleDateFormat 解析不起作用?

Java - 计算除节假日(周六和周日)之外的天数

php - 没有从谷歌日历 API v3 获取谷歌日历事件的颜色 ID

相对于复活节及时计算事件

java - 隐写术,只有 jpg 作为输入有效,当使用 png 时,生成的图像看起来很奇怪

java - 为什么在第一个打印中它说不同,而 a 和 b 相同?

java - Jackson 使用时间戳字段反序列化 JSON

javascript - 在php中计算每月包(产品)价格

java - 如何在android中设置日历中日期的颜色