当我进行测试以获得一个LocalDateTime
的毫秒数我发现使用 Calendar
和 Date< 获取结果有差异
。
这是我的“测试”:
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/