Пакет java.time.temporal

Доступ к дате и времени с использованием полей и единиц измерения, а также корректоров даты и времени.

Этот пакет расширяет базовый пакет, предоставляя дополнительную функциональность для более мощных сценариев использования. Поддержка включает:

  • Единицы измерения даты и времени, такие как годы, месяцы, дни и часы
  • Поля даты и времени, такие как месяц года, день недели или час
  • Функции корректировки даты и времени
  • Различные определения недель

Поля и единицы

Даты и время выражаются через поля и единицы. Единица используется для измерения промежутка времени, например, лет, дней или минут. Все единицы реализуют TemporalUnit. Набор известных единиц определён в ChronoUnit, например DAYS. Интерфейс единиц разработан для поддержки прикладных единиц.

Поле используется для выражения части большей даты и времени, например, года, месяца или секунды. Все поля реализуют TemporalField. Набор известных полей определен в ChronoField, например HOUR_OF_DAY. Дополнительные поля определены в JulianFields, WeekFields и IsoFields. Интерфейс полей разработан для поддержки прикладных полей.

Этот пакет предоставляет инструменты, которые позволяют обращаться к единицам и полям даты и времени общим способом, наиболее подходящим для фреймворков. Temporal предоставляет абстракцию для типов дат и времени, которые поддерживают поля. Его методы поддерживают получение значения поля, создание новой даты и времени с изменённым значением поля, а также запросы дополнительной информации, обычно используемой для извлечения смещения или часового пояса.

Одно из применений полей в прикладном коде — извлечение полей, для которых нет удобного метода. Например, получение дня месяца достаточно часто используется, и для этого есть метод в LocalDate под названием getDayOfMonth(). Однако для более необычных полей необходимо использовать поле. Например, date.get(ChronoField.ALIGNED_WEEK_OF_MONTH). Поля также обеспечивают доступ к диапазону допустимых значений.

Корректировка и запрос

Ключевая часть пространства проблем даты и времени — корректировка даты до нового, связанного значения, такого как «последний день месяца» или «следующая среда». Эти операции моделируются как функции, корректирующие базовую дату и время. Функции реализуют TemporalAdjuster и действуют на Temporal. Набор общих функций предоставлен в TemporalAdjusters. Например, чтобы найти первое вхождение дня недели после заданной даты, используйте TemporalAdjusters.next(DayOfWeek), например date.with(next(MONDAY)). Приложения также могут определять корректирующие функции, реализуя TemporalAdjuster.

Интерфейс TemporalAmount моделирует величины относительного времени.

В дополнение к корректировке даты и времени предоставлен интерфейс для запросов с помощью TemporalQuery. Наиболее распространённые реализации интерфейса запроса — это ссылки на методы. Методы from(TemporalAccessor) в основных классах могут использоваться, например, LocalDate::from или Month::from. Дополнительные реализации предоставлены в TemporalQueries в виде статических методов. Приложения также могут определять запросы, реализуя TemporalQuery.

Недели

В разных регионах существуют различные определения недель. Например, в Европе неделя обычно начинается с понедельника, а в США — с воскресенья. Класс WeekFields моделирует это различие.

Система календаря ISO определяет дополнительное деление лет на недели. Это определяет год на основе целых недель с понедельника по понедельник. Это смоделировано в IsoFields.

Спецификация пакета

Если не указано иное, передача null-аргумента в конструктор или метод любого класса или интерфейса в этом пакете вызовет исключение NullPointerException. Описание null-поведения приведено в документации Javadoc "@param". Исключение "@throws NullPointerException" не документировано явно в каждом методе.

Все вычисления должны проверять переполнение числовых типов и выбрасывать либо ArithmeticException, либо DateTimeException.

С:
1.8
Интерфейс Описание
Temporal

Интерфейс фреймворкового уровня, определяющий чтение и запись в объект временной шкалы, такой как дата, время, смещение или их сочетание.

TemporalAccessor

Интерфейс фреймворкового уровня, определяющий только чтение объекта временной шкалы, например, даты, времени, смещения или их сочетания.

TemporalAdjuster

Стратегия для корректировки временного объекта.

TemporalAmount

Интерфейс фреймворкового уровня, определяющий временной промежуток, например, «6 часов», «8 дней» или «2 года и 3 месяца».

TemporalField

Поле даты и времени, такое как месяц или час.

TemporalQuery<R>

Стратегия для запроса временного объекта.

TemporalUnit

Единица измерения даты и времени, например, дни или часы.

Класс Описание
IsoFields

Поля и единицы, специфичные для системы календаря ISO-8601, включая квартал года и год, основанный на неделях.

JulianFields

Набор полей даты, предоставляющий доступ к юлианским дням.

TemporalAdjusters

Общие и полезные TemporalAdjusters.

TemporalQueries

Общие реализации TemporalQuery.

ValueRange

Диапазон допустимых значений для поля даты и времени.

WeekFields

Локализованные определения полей дня недели, недели месяца и недели года.

Перечисление Описание
ChronoField

Стандартный набор полей.

ChronoUnit

Стандартный набор единиц измерения временных периодов.

Исключение Описание
UnsupportedTemporalTypeException

UnsupportedTemporalTypeException указывает, что ChronoField или ChronoUnit не поддерживаются для класса Temporal.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/temporal/package-summary.html

Spec-Zone .ru
спецификации, руководства, описания, API