talosのプログラミング教室

Java Gold合格への道 ~日付/時刻API・日時の取得~

スポンサーリンク

こんにちは。たろすです。

今回は日付/時刻APIの日時の取得について説明します。

日付/時刻の種類

時差情報を含まない現地日時をローカルタイムと呼びます。

それを表現するクラスは以下の三つです。

・LocalDate(日付のみ)
・LocalTime(時刻のみ)
・LocalDateTime(日付と時刻)


一方で、時差情報を含む日時をオフセットタイムと呼びます。

オフセットタイムは以下の二つのクラスによって表現されます。

・OffsetTime(時刻のみ)
・OffsetDateTime(日付と時刻)


またタイムゾーンによる時差を扱うクラスもあります。

このクラスではサマータイムも考慮することができます。

・ZonedDateTime


そして、年、年月、月日を扱うクラスもあります。

・Year(年)
・YearMonth(年月)
・MonthDay(月日)

現在の日時を取得

現在の日時を取得するにはnowメソッドを使います。

System.out.println("LocalDate:" + LocalDate.now());
System.out.println("LocalTime:" + LocalTime.now());
System.out.println("LocalDateTime:" + LocalDateTime.now());
System.out.println("OffsetTime" + OffsetTime.now());
System.out.println("OfsetDateTime:" + OffsetDateTime.now());
System.out.println("ZonedDateTime:" + ZonedDateTime.now());
System.out.println("Year:" + Year.now());
System.out.println("YearMonth:" + YearMonth.now());
System.out.println("MonthDay:" + MonthDay.now());
LocalDate:2022-01-15
LocalTime:15:29:19.899
LocalDateTime:2022-01-15T15:29:19.899
OffsetTime15:29:19.903+09:00
OfsetDateTime:2022-01-15T15:29:19.903+09:00
ZonedDateTime:2022-01-15T15:29:19.903+09:00[Asia/Tokyo]
Year:2022
YearMonth:2022-01
MonthDay:--01-15

特定の日時を取得

特定の日時を取得するにはofメソッドを使います。

System.out.println("LocalDate:" + LocalDate.of(2022, 4, 22));
System.out.println("LocalTime:" + LocalTime.of(18, 10, 25));
System.out.println("LocalDateTime:" + LocalDateTime.of(2022, 4, 22, 18, 10, 25));
System.out.println("OffsetTime" + OffsetTime.of(18, 10, 25, 0, ZoneOffset.ofHours(9)));
System.out.println("OfsetDateTime:" + OffsetDateTime.of(2022, 4, 22, 18, 10, 25, 0, ZoneOffset.ofHours(9)));
System.out.println("ZonedDateTime:" + ZonedDateTime.of(2022, 4, 22, 18, 10, 25, 0, ZoneId.of("Asia/Tokyo")));
System.out.println("Year:" + Year.of(2022));
System.out.println("YearMonth:" + YearMonth.of(2022, 4));
System.out.println("MonthDay:" + MonthDay.of(4, 22));
LocalDate:2022-04-22
LocalTime:18:10:25
LocalDateTime:2022-04-22T18:10:25
OffsetTime18:10:25+09:00
OfsetDateTime:2022-04-22T18:10:25+09:00
ZonedDateTime:2022-04-22T18:10:25+09:00[Asia/Tokyo]
Year:2022
YearMonth:2022-04
MonthDay:--04-22

文字列から日付インスタンスを取得

日付インスタンスを取得するにはparseメソッドを使います。

例としてLocalDateTimeインスタンスを取得するコードを示します。

LocalDateTime dt = LocalDateTime.parse("2022-04-22T18:10:25.000");
System.out.println(dt);
2022-04-22T18:10:25

おわりに

今回は日付/時刻APIの日時の取得について説明しました。