Java SE7までは日時を扱う際 java.util.Calender、java.util.Data、java.text.DataFormatなどのAPIを使用していましたが、
Java SE8 から新たに日付・時刻を扱う java.time APIが追加されました。
今回はその中でも、一部を抜粋してご紹介します。
java.time.LocalDateTime
現在のタイムゾーンのない日時を取得するクラスです。
タイムゾーンありの日時を取得したい場合は、java.time.ZonedDateTime を使用し、標準時からの時差付きの日時を取得したい場合は、java.time.OffsetDateTime を使用します。
【使用例】
LocalDateTime ldt = LocalDateTime.now(); //現在の日時を取得
System.out.println( ldt );
取得日時が2020年10月20日正午丁度なら『2020-10-20T12:00:00.000』と出力されます。
他に日付だけを取得できる java.time.LocalDate、時刻だけを取得できる java.timeLocalTime などもあります。
【使用例】
LocalDate ld = LocalDate.now(); //現在の日付を取得
System.out.println( ld ); //『2020-10-20』の書式で出力される
LocalTime lt = LocalTime.now(); //現在の時刻を取得
System.out.println( lt ); //『12:00:00.000』の書式で出力される
java.time.fomat.DateTimeFormatter
日付時刻を指定のフォーマットで文字列出力、解析するクラスです。
【使用例】
//指定されたパターンを使用してフォーマッタを生成
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(“yyyy/MM/dd HH:mm:ss”);
//第一引数に与えられた日時型文字列を、第二引数のフォーマッタを使用して
//LocalDateTimeオブジェクトを生成
LocalDateTime ldt = LocalDateTime.parse(“2025/05/15 12:30:25”, dtf);
//『2025-05-20T12:00:00.000』の書式で出力される
System.out.println(ldt);
//第一引数に与えられた日時を、第二引数のフォーマッタを使用して文字列を生成
//『2025/05/15 12:30:25』の書式で出力される
System.out.println(LocalDateTime.now().format(dtf));
いかがでしたでしょうか。
他にも日本の暦や夏時間などを表すものなど様々な機能が追加されているので、興味があったら是非調べてみて下さい。