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)
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)
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
関連記事
- 日付・時刻の基本
- Date, CalendarではなくLocalDateTime, ZonedDateTimeを使おう
- 文字列と日付・時刻の変換
- 日付と時刻、曜日の計算
- 現在時刻(日時)の取得いろいろ
- 現在の曜日(DayOfWeek)を取得
- ZoneIdとZoneOffsetの違い
- API 使用例
- Calendar (カレンダー)
- ChronoLocalDate
- ChronoLocalDateTime
- ChronoZonedDateTime
- Clock (時計)
- Date (日付・時刻)
- DateTimeException (日付・時刻の例外)
- DateTimeParseException (日付・時刻の解析例外)
- DayOfWeek (曜日)
- Duration (時間の量)
- Era (紀元)
- Instant (時点)
- InstantSource
- JapaneseDate (和暦を使った日付)
- LocalDate (日付・タイムゾーンなし)
- LocalDateTime (日時・タイムゾーンなし)
- LocalTime (時刻・タイムゾーンなし)
- Month (月)
- MonthDay (月・日)
- OffsetDateTime (日時・オフセットあり)
- OffsetTime (時刻・オフセットあり)
- Period (日付の量)
- Temporal
- TemporalAdjuster (日付・時刻の調整)
- TemporalAdjusters (日付・時刻の調整ユーティリティ)
- TimeZone (タイムゾーン)
- Year (年)
- YearMonth (年・月)
- ZonedDateTime (日時・タイムゾーンあり)
- ZoneId (タイムゾーンID)
- ZoneOffset (タイムゾーン・オフセット)