UNIXタイムスタンプとは協定世界時 (UTC) における1970年1月1日午前0時0分0秒からの経過秒数であるが、 Java では System.currentTimeMills() により、ミリ秒単位の値が得られる。
long time = System.currentTimeMills();
日頃、プログラムの実行時間計測に System.currentTimeMills() を使っているが、現在時刻を得るには 次のようにする。
Instant instant = Instant.ofEpochSecond(System.currentTimeMills()/1000); ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault()); System.out.println(zonedDateTime);
このときの出力は次のようになる。
2023-01-23T12:34:56+09:00[Asia/Tokyo]
文字列形式には YYYY-MM-DDTHH:mm:ssZ 形式も使われる。Zは UTC を意味する。
プログラムの実行時間の計測では、ミリ秒では精度が足りないケースがある。 このとき System.nanoTime() を使う[2]。 System.currentTimeMillis() とは異なり、現在時刻は求められない。
自分の場合、一回の計測ではなく、繰り返し実行する処理の一部の実行時間を累積して計測するのに 使っている。