2

Unix の時刻には「うるう秒」が含まれていないと聞きました。また、Java Calendar API にはうるう秒が含まれていないと聞きました。

1972年からうるう秒として27秒が追加されました。また、Unix 時間は 1970-01-01 00:00:00 (UTC) から始まりました。

したがって、現在の UTC 時間と Unix 時間には 27 秒の差があると思いました。

私の考えを明確にするために、以下のような実験を行いました。1614766198 は、2021 年 3 月 3 日 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) から 27 秒の差ではなく 2 秒の差を返すのはなぜですか?

4

1 に答える 1