java - 为什么从 LocalDateTime 获取毫秒和从 Calendar 获取日期之间存在差异?

标签 java date milliseconds

当我进行测试以获得一个LocalDateTime 的毫秒数我发现使用 CalendarDate< 获取结果有差异

这是我的“测试”:

System.out.println(LocalDateTime.of(2016,5,19,14,8,0).toInstant(ZoneOffset.UTC).toEpochMilli());

System.out.println(Timestamp.valueOf(LocalDateTime.of(2016,5,19,14,8,0)).getTime());

Calendar c = Calendar.getInstance(TimeZone.getTimeZone(ZoneId.of("UTC")));
c.set(2016,5,19,14,8,0);

System.out.println(c.getTime().getTime());

我不明白为什么它们之间有区别。

最佳答案

您的测试结果是:

1463666880000
1463659680000
1466345280067

每个值都以毫秒为单位。

  • 前两个值之间的差异正好是两个小时。这是因为在第一行中你设置了UTC时区,而在第二行中你没有设置任何内容,所以它是本地时区(事实上,我目前在UTC+2 )。

  • 第一个值和第三个值的差异(除了毫秒部分)正好是一个月。这是因为 LocalDateTime.of() 方法需要 1-12 表示的月份参数,而 Calendar.set() 需要 0-11 表示的月份参数。因此,在第三行中,您实际上设置了 06/19/2016

关于java - 为什么从 LocalDateTime 获取毫秒和从 Calendar 获取日期之间存在差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37327177/

相关文章:

java - 如何连接两个KTable并将结果ktable写入状态存储

java - JFreeChart 空指针问题

javascript - 如何在 Cypress 快照测试中处理时区?

java - Joda-Time 库指定 mili 秒精度

java - Android Room-插入之前如何检查同名实体?

java - 如何从 Avro Schema 获取所有字段名称?

mysql - SQL查询多个日期到一个日期

google-chrome - HTML5 日期输入接受无效日期?

java - 从 jFreeChart 毫秒到 java.util.Date

java - 是 System.nanoTime();或 System.currentTimeMillis();更适合一场比赛