Javaにも日付+時刻を扱うクラスは複数あります。
今回はInstatとDateとZonedDateTimeとLocalDateTimeの現在時刻取得方法を書き溜めます。
Instant
クラス
Instantは、1970年1月1日0時0分0秒からの経過秒数(エポック数)を保持するクラスです。
現在時刻を取得するにはこんな感じ。
1 2 3 4 |
import java.time.Instant; Instant now = Instant.now(); System.out.println(now); |
ZonedDateTime
クラス
ZonedDateTimeは、タイムゾーン付き日付/時間の不変表現ですべての日付および時間フィールドとタイムゾーンを保持するクラスです。
現在時刻を取得するにはこんな感じ。
1 2 3 4 5 6 7 8 9 10 |
import java.time.ZonedDateTime; import java.time.ZoneId; ZonedDateTime now = ZonedDateTime.now(); // システムデフォルトタイムゾーン ZonedDateTime nowUtc = ZonedDateTime.now(ZoneId.of("UTC")); // UTC時刻 ZonedDateTime nowJst = ZonedDateTime.now(ZoneId.of("Asia/Tokyo")); // UTC時刻 System.out.println(now); System.out.println(nowUtc); System.out.println(nowJst); |
LocalDateTimeクラス
LocalDateTimeは、Java8からjava.timeパッケージに追加されたクラスで、日付/時間を表す不変の日付/時間オブジェクトであるもののZonedDateTimeと違いタイムゾーンを保持していません。
現在時刻を取得するにはこんな感じ。
1 2 3 4 |
import java.time.LocalDateTime; LocalDateTime now = LocalDateTime.now(); System.out.println(now); |
Date クラス
現在では非推奨です。使わないようにしましょう。InstantかLocalDateTime,ZonedDateTimeを使いましょう。
一応、現在時刻を取得するにはこんな感じ。
1 2 3 4 |
import java.util.Date; Date now = new Date(); System.out.println(now); |
新しく書くコードにはDateクラスは使用しないようにね。
じゃあねー。