Spec-Zone.ru › OpenJDK 24

Пакет java.time.temporal

package 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"). Исключение NullPointerException не документируется в каждом методе явно.

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

Since:
1.8
Пакет Описание
java.time
Основной API для дат, времён, мгновений и продолжительностей.
java.time.chrono
Общий API для календарных систем, отличных от стандартной ISO.
java.time.format
Предоставляет классы для печати и анализа дат и времён.
java.time.zone
Поддержка часовых поясов и их правил.
Класс Описание
ChronoField
Стандартный набор полей.
ChronoUnit
Стандартный набор единиц периодов дат.
IsoFields
Поля и единицы, специфичные для системы календаря ISO-8601, включая квартал года и год на основе недели.
JulianFields
Набор полей дат, предоставляющих доступ к юлианским дням.
Temporal
Интерфейс на уровне фреймворка, определяющий чтение и запись временных объектов, таких как даты, время, смещения или их комбинации.
TemporalAccessor
Интерфейс на уровне фреймворка, определяющий только чтение временных объектов, таких как даты, время, смещения или их комбинации.
TemporalAdjuster
Стратегия корректировки временного объекта.
TemporalAdjusters
Общие и полезные TemporalAdjusters.
TemporalAmount
Интерфейс на уровне фреймворка, определяющий отрезок времени, например, "6 часов", "8 дней" или "2 года и 3 месяца".
TemporalField
Поле даты и времени, например, месяц года или минута часа.
TemporalQueries
Общие реализации TemporalQuery.
TemporalQuery<R>
Стратегия запроса временного объекта.
TemporalUnit
Единица даты и времени, например, Дни или Часы.
UnsupportedTemporalTypeException
UnsupportedTemporalTypeException указывает, что ChronoField или ChronoUnit не поддерживаются для временного класса.
ValueRange
Диапазон допустимых значений для поля даты и времени.
WeekFields
Локализованные определения полей день недели, неделя месяца и неделя года.

© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/temporal/package-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API