Java:如何在UTC中获取时间戳“ 1000-01-01 00:00:00”?

时间:2019-09-18 11:57:24

标签: java datetime calendar

我在两个不同的结果中得到了“ 1000-01-01 00:00:00”的时间戳。有人知道为什么吗?

TimeZone timeZone = TimeZone.getTimeZone(ZoneOffset.UTC);
GregorianCalendar calendar = new GregorianCalendar(timeZone);
calendar.clear();
calendar.set(1000, 0, 1, 0, 0, 0);
System.out.println(calendar.getTimeInMillis()); // print -30609792000000
System.out.println(ZonedDateTime.of(1000, 1, 1,0, 0, 0, 0, timeZone.toZoneId()).toInstant().toEpochMilli()); // print -30610224000000

1 个答案:

答案 0 :(得分:3)

GregorianCalendar尽管使用了儒略历,但从1582年开始使用公历。相反,ZonedDateTime使用Proleptic Gregorian calendar,也就是说,将公历推算到当时没有使用过的世纪中。

因此,您实际上使用的是两个日历系统。这就解释了为什么您得到两个不同的结果。