我听说Unix时间不包括“闰秒”。而且我还听说Java Calendar API 不包括闰秒。
自 1972 年以来,闰秒增加了 27 秒。Unix 时间开始于 1970-01-01 00:00:00 (UTC)。
所以,我认为当前的 UTC 时间和 Unix 时间之间有 27 秒的差异。
为了澄清我的想法,我做了一些如下的实验。1614766198 是 2021-03-03 10:10:00 (UTC+0) 的 Unix 时间
import java.util.Calendar;
import java.util.TimeZone;
public class CanendarTest {
public static void main(String[] args) throws InterruptedException {
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.setTimeInMillis(1614766198L * 1000);
System.out.println(cal.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.MONTH));
System.out.println(cal.get(Calendar.DAY_OF_MONTH));
System.out.println(cal.get(Calendar.HOUR_OF_DAY));
System.out.println(cal.get(Calendar.MINUTE));
System.out.println(cal.get(Calendar.SECOND));
}
}
上面代码的结果是
output
2021
2
3
10
9
58
输出看起来像“2021-03-03 10:09:58”。
所以,我的问题是,为什么 Java Calendar API 从 1970-01-01 00:00:00 (UTC) 返回 2 秒的差异而不是 27 秒的差异?