広告

Java : TemporalAccessor - API使用例

TemporalAccessor (Java SE 21 & JDK 21) の使い方まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。


概要

時間的オブジェクト(日付、時間、オフセット、またはそれらのなんらかの組合せなど)への読取り専用アクセスを定義するフレームワークレベルのインタフェースです。

クラス構成

TemporalAccessor インタフェースを使うと、日付や時刻の各フィールドへ汎用的にアクセスできます。
ただし、フレームワークレベルのインタフェースであるため直接使うことは少ないと思います。

final TemporalAccessor accessor = LocalDate.of(2100, 4, 15);
System.out.println(accessor); // 2100-04-15

final var year = accessor.get(ChronoField.YEAR);
System.out.println(year); // 2100

final var month = accessor.get(ChronoField.MONTH_OF_YEAR);
System.out.println(month); // 4

final var day = accessor.get(ChronoField.DAY_OF_MONTH);
System.out.println(day); // 15
final TemporalAccessor accessor = LocalTime.of(10, 59);
System.out.println(accessor); // 10:59

final var hour = accessor.get(ChronoField.HOUR_OF_DAY);
System.out.println(hour); // 10

final var minute = accessor.get(ChronoField.MINUTE_OF_HOUR);
System.out.println(minute); // 59

メソッド

default int get (TemporalField field)

指定されたフィールドの値をintとして取得します。

final TemporalAccessor accessor = LocalDate.of(2100, 4, 15);
System.out.println(accessor); // 2100-04-15

final var year = accessor.get(ChronoField.YEAR);
System.out.println(year); // 2100

final var month = accessor.get(ChronoField.MONTH_OF_YEAR);
System.out.println(month); // 4

final var day = accessor.get(ChronoField.DAY_OF_MONTH);
System.out.println(day); // 15
final TemporalAccessor accessor = LocalTime.of(10, 59);
System.out.println(accessor); // 10:59

final var hour = accessor.get(ChronoField.HOUR_OF_DAY);
System.out.println(hour); // 10

final var minute = accessor.get(ChronoField.MINUTE_OF_HOUR);
System.out.println(minute); // 59

long getLong (TemporalField field)

指定されたフィールドの値をlongとして取得します。

final TemporalAccessor accessor = LocalDate.of(2100, 4, 15);
System.out.println(accessor); // 2100-04-15

final var year = accessor.getLong(ChronoField.YEAR);
System.out.println(year); // 2100

final var month = accessor.getLong(ChronoField.MONTH_OF_YEAR);
System.out.println(month); // 4

final var day = accessor.getLong(ChronoField.DAY_OF_MONTH);
System.out.println(day); // 15
final TemporalAccessor accessor = LocalTime.of(10, 59);
System.out.println(accessor); // 10:59

final var hour = accessor.getLong(ChronoField.HOUR_OF_DAY);
System.out.println(hour); // 10

final var minute = accessor.getLong(ChronoField.MINUTE_OF_HOUR);
System.out.println(minute); // 59

boolean isSupported (TemporalField field)

指定されたフィールドがサポートされているかどうかをチェックします。

final TemporalAccessor accessor = LocalDate.of(2100, 4, 15);
System.out.println(accessor); // 2100-04-15

System.out.println(accessor.isSupported(ChronoField.YEAR)); // true
System.out.println(accessor.isSupported(ChronoField.MONTH_OF_YEAR)); // true
System.out.println(accessor.isSupported(ChronoField.DAY_OF_MONTH)); // true

System.out.println(accessor.isSupported(ChronoField.HOUR_OF_DAY)); // false

default <R> R query (TemporalQuery<R> query)

この日付/時間を問い合せます。

final TemporalAccessor accessor = LocalDate.of(2100, 4, 15);
System.out.println(accessor); // 2100-04-15

final var ret = accessor.query(TemporalQueries.precision());
System.out.println(ret); // Days
final TemporalAccessor accessor = LocalTime.of(10, 59);
System.out.println(accessor); // 10:59

final var ret = accessor.query(TemporalQueries.precision());
System.out.println(ret); // Nanos

default ValueRange range (TemporalField field)

指定されたフィールドの有効な値の範囲を取得します。

final TemporalAccessor accessor = LocalDate.of(2100, 4, 15);
System.out.println(accessor); // 2100-04-15

System.out.println(accessor.range(ChronoField.YEAR)); // -999999999 - 999999999
System.out.println(accessor.range(ChronoField.MONTH_OF_YEAR)); // 1 - 12
System.out.println(accessor.range(ChronoField.DAY_OF_MONTH)); // 1 - 30

関連記事

ページの先頭へ