Spec-Zone.ru › OpenJDK 25

Класс TemporalAdjusters

java.lang.Object
java.time.temporal.TemporalAdjusters
public final class TemporalAdjusters extends Object
Распространённые и полезные TemporalAdjusters.

Корректировки — это ключевой инструмент для изменения временных объектов. Они позволяют вынести процесс корректировки во внешнюю сущность и применять различные подходы, как в шаблоне проектирования «Стратегия». Например, корректировка может устанавливать дату, исключая выходные, или устанавливать дату последнего дня месяца.

Использовать TemporalAdjuster можно двумя равнозначными способами. Первый — вызвать метод непосредственно у интерфейса. Второй — использовать Temporal.with(TemporalAdjuster):

  // these two lines are equivalent, but the second approach is recommended
  temporal = thisAdjuster.adjustInto(temporal);
  temporal = temporal.with(thisAdjuster);
Рекомендуется использовать второй подход, with(TemporalAdjuster), так как его гораздо проще читать в коде.

Этот класс содержит стандартный набор корректировок, доступных в виде статических методов. К ним относятся:

  • поиск первого или последнего дня месяца
  • поиск первого дня следующего месяца
  • поиск первого или последнего дня года
  • поиск первого дня следующего года
  • поиск первого или последнего дня недели в месяце, например «первая среда июня»
  • поиск следующего или предыдущего дня недели, например «следующий четверг»
Требования к реализации:
Все реализации, предоставляемые статическими методами, являются неизменяемыми.
С версии:
1.8
См. также:
  • TemporalAdjuster

Краткое описание методов

Модификатор и тип Метод Описание
static TemporalAdjuster dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek)
Возвращает корректировку дня недели в месяце, которая возвращает новую дату с порядковым днём недели, определяемым относительно месяца.
static TemporalAdjuster firstDayOfMonth()
Возвращает корректировку «первый день месяца», которая возвращает новую дату, установленную на первый день текущего месяца.
static TemporalAdjuster firstDayOfNextMonth()
Возвращает корректировку «первый день следующего месяца», которая возвращает новую дату, установленную на первый день следующего месяца.
static TemporalAdjuster firstDayOfNextYear()
Возвращает корректировку «первый день следующего года», которая возвращает новую дату, установленную на первый день следующего года.
static TemporalAdjuster firstDayOfYear()
Возвращает корректировку «первый день года», которая возвращает новую дату, установленную на первый день текущего года.
static TemporalAdjuster firstInMonth(DayOfWeek dayOfWeek)
Возвращает корректировку первого дня недели в месяце, которая возвращает новую дату в том же месяце с первым совпадающим днём недели.
static TemporalAdjuster lastDayOfMonth()
Возвращает корректировку «последний день месяца», которая возвращает новую дату, установленную на последний день текущего месяца.
static TemporalAdjuster lastDayOfYear()
Возвращает корректировку «последний день года», которая возвращает новую дату, установленную на последний день текущего года.
static TemporalAdjuster lastInMonth(DayOfWeek dayOfWeek)
Возвращает корректировку последнего дня недели в месяце, которая возвращает новую дату в том же месяце с последним совпадающим днём недели.
static TemporalAdjuster next(DayOfWeek dayOfWeek)
Возвращает корректировку следующего дня недели, которая изменяет дату на первое вхождение указанного дня недели после корректируемой даты.
static TemporalAdjuster nextOrSame(DayOfWeek dayOfWeek)
Возвращает корректировку следующего или текущего дня недели, которая изменяет дату на первое вхождение указанного дня недели после корректируемой даты, если только дата уже не приходится на этот день; в таком случае возвращается тот же объект.
static TemporalAdjuster ofDateAdjuster(UnaryOperator<LocalDate> dateBasedAdjuster)
Создаёт TemporalAdjuster, оборачивающий корректировку даты.
static TemporalAdjuster previous(DayOfWeek dayOfWeek)
Возвращает корректировку предыдущего дня недели, которая изменяет дату на первое вхождение указанного дня недели перед корректируемой датой.
static TemporalAdjuster previousOrSame(DayOfWeek dayOfWeek)
Возвращает корректировку предыдущего или текущего дня недели, которая изменяет дату на первое вхождение указанного дня недели перед корректируемой датой, если только дата уже не приходится на этот день; в таком случае возвращается тот же объект.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

ofDateAdjuster

public static TemporalAdjuster ofDateAdjuster(UnaryOperator<LocalDate> dateBasedAdjuster)
Создаёт TemporalAdjuster, оборачивающий корректировку даты.

TemporalAdjuster основан на низкоуровневом интерфейсе Temporal. Этот метод позволяет обернуть корректировку от LocalDate к LocalDate, чтобы она соответствовала интерфейсу на основе временных объектов. Это сделано для удобства, чтобы упростить создание пользовательских корректировок.

Как правило, пользовательские корректировки следует объявлять как статические константы:

 static TemporalAdjuster TWO_DAYS_LATER =
      TemporalAdjusters.ofDateAdjuster(date -> date.plusDays(2));
Параметры:
dateBasedAdjuster — корректировка на основе даты, не null
Возвращает:
корректировку временного объекта, оборачивающую корректировку даты, не null

firstDayOfMonth

public static TemporalAdjuster firstDayOfMonth()
Возвращает корректировку «первый день месяца», которая возвращает новую дату, установленную на первый день текущего месяца.

В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 возвращается 2011-01-01.
Для входной даты 2011-02-15 возвращается 2011-02-01.

Это поведение подходит для использования с большинством календарных систем. Оно эквивалентно следующему:

 temporal.with(DAY_OF_MONTH, 1);
Возвращает:
корректировку первого дня месяца, не null

lastDayOfMonth

public static TemporalAdjuster lastDayOfMonth()
Возвращает корректировку «последний день месяца», которая возвращает новую дату, установленную на последний день текущего месяца.

В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 возвращается 2011-01-31.
Для входной даты 2011-02-15 возвращается 2011-02-28.
Для входной даты 2012-02-15 возвращается 2012-02-29 (високосный год).
Для входной даты 2011-04-15 возвращается 2011-04-30.

Это поведение подходит для использования с большинством календарных систем. Оно эквивалентно следующему:

 long lastDay = temporal.range(DAY_OF_MONTH).getMaximum();
 temporal.with(DAY_OF_MONTH, lastDay);
Возвращает:
корректировку последнего дня месяца, не null

firstDayOfNextMonth

public static TemporalAdjuster firstDayOfNextMonth()
Возвращает корректировку «первый день следующего месяца», которая возвращает новую дату, установленную на первый день следующего месяца.

В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 возвращается 2011-02-01.
Для входной даты 2011-02-15 возвращается 2011-03-01.

Это поведение подходит для использования с большинством календарных систем. Оно эквивалентно следующему:

 temporal.with(DAY_OF_MONTH, 1).plus(1, MONTHS);
Возвращает:
корректировку первого дня следующего месяца, не null

firstDayOfYear

public static TemporalAdjuster firstDayOfYear()
Возвращает корректировку «первый день года», которая возвращает новую дату, установленную на первый день текущего года.

В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 возвращается 2011-01-01.
Для входной даты 2011-02-15 возвращается 2011-01-01.

Это поведение подходит для использования с большинством календарных систем. Оно эквивалентно следующему:

 temporal.with(DAY_OF_YEAR, 1);
Возвращает:
корректировку первого дня года, не null

lastDayOfYear

public static TemporalAdjuster lastDayOfYear()
Возвращает корректировку «последний день года», которая возвращает новую дату, установленную на последний день текущего года.

В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 возвращается 2011-12-31.
Для входной даты 2011-02-15 возвращается 2011-12-31.

Это поведение подходит для использования с большинством календарных систем. Оно эквивалентно следующему:

 long lastDay = temporal.range(DAY_OF_YEAR).getMaximum();
 temporal.with(DAY_OF_YEAR, lastDay);
Возвращает:
корректировку последнего дня года, не null

firstDayOfNextYear

public static TemporalAdjuster firstDayOfNextYear()
Возвращает корректировку «первый день следующего года», которая возвращает новую дату, установленную на первый день следующего года.

В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 возвращается 2012-01-01.

Это поведение подходит для использования с большинством календарных систем. Оно эквивалентно следующему:

 temporal.with(DAY_OF_YEAR, 1).plus(1, YEARS);
Возвращает:
корректировку первого дня следующего месяца, не null

firstInMonth

public static TemporalAdjuster firstInMonth(DayOfWeek dayOfWeek)
Возвращает корректировку первого дня недели в месяце, которая возвращает новую дату в том же месяце с первым совпадающим днём недели. Используется для выражений вроде «первый вторник марта».

В календарной системе ISO поведение следующее:
Для входной даты 2011-12-15 и параметра (MONDAY) возвращается 2011-12-05.
Для входной даты 2011-12-15 и параметра (FRIDAY) возвращается 2011-12-02.

Это поведение подходит для использования с большинством календарных систем. Оно использует поля DAY_OF_WEEK и DAY_OF_MONTH и единицу DAYS, а также предполагает семидневную неделю.

Параметры:
dayOfWeek — день недели, не null
Возвращает:
корректировку первого дня недели в месяце, не null

lastInMonth

public static TemporalAdjuster lastInMonth(DayOfWeek dayOfWeek)
Возвращает корректировку последнего дня недели в месяце, которая возвращает новую дату в том же месяце с последним совпадающим днём недели. Используется для выражений вроде «последний вторник марта».

В календарной системе ISO поведение следующее:
Для входной даты 2011-12-15 и параметра (MONDAY) возвращается 2011-12-26.
Для входной даты 2011-12-15 и параметра (FRIDAY) возвращается 2011-12-30.

Это поведение подходит для использования с большинством календарных систем. Оно использует поля DAY_OF_WEEK и DAY_OF_MONTH и единицу DAYS, а также предполагает семидневную неделю.

Параметры:
dayOfWeek — день недели, не null
Возвращает:
корректировку первого дня недели в месяце, не null

dayOfWeekInMonth

public static TemporalAdjuster dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek)
Возвращает корректировку дня недели в месяце, которая возвращает новую дату с порядковым днём недели, определяемым относительно месяца. Используется для выражений вроде «второй вторник марта».

В календарной системе ISO поведение следующее:
Для входной даты 2011-12-15 и параметров (1,TUESDAY) возвращается 2011-12-06.
Для входной даты 2011-12-15 и параметров (2,TUESDAY) возвращается 2011-12-13.
Для входной даты 2011-12-15 и параметров (3,TUESDAY) возвращается 2011-12-20.
Для входной даты 2011-12-15 и параметров (4,TUESDAY) возвращается 2011-12-27.
Для входной даты 2011-12-15 и параметров (5,TUESDAY) возвращается 2012-01-03.
Для входной даты 2011-12-15 и параметров (-1,TUESDAY) возвращается 2011-12-27 (последний день недели в месяце).
Для входной даты 2011-12-15 и параметров (-4,TUESDAY) возвращается 2011-12-06 (за 3 недели до последнего дня недели в месяце).
Для входной даты 2011-12-15 и параметров (-5,TUESDAY) возвращается 2011-11-29 (за 4 недели до последнего дня недели в месяце).
Для входной даты 2011-12-15 и параметров (0,TUESDAY) возвращается 2011-11-29 (последний день недели предыдущего месяца).

Для положительного или нулевого порядкового номера алгоритм эквивалентен поиску первого дня недели в месяце, соответствующего заданному, с последующим прибавлением к нему нужного количества недель. Для отрицательного порядкового номера алгоритм эквивалентен поиску последнего соответствующего дня недели в месяце с последующим вычитанием нужного количества недель. Порядковый номер недели не проверяется и интерпретируется с допусками в соответствии с этим алгоритмом. Согласно этому определению нулевой порядковый номер находит последний соответствующий день недели предыдущего месяца.

Это поведение подходит для использования с большинством календарных систем. Оно использует поля DAY_OF_WEEK и DAY_OF_MONTH и единицу DAYS, а также предполагает семидневную неделю.

Параметры:
ordinal — неделя в месяце, без ограничений, обычно от -5 до 5
dayOfWeek — день недели, не null
Возвращает:
корректировку дня недели в месяце, не null

next

public static TemporalAdjuster next(DayOfWeek dayOfWeek)
Возвращает корректировку следующего дня недели, которая изменяет дату на первое вхождение указанного дня недели после корректируемой даты.

В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 (суббота) и параметра (MONDAY) возвращается 2011-01-17 (через два дня).
Для входной даты 2011-01-15 (суббота) и параметра (WEDNESDAY) возвращается 2011-01-19 (через четыре дня).
Для входной даты 2011-01-15 (суббота) и параметра (SATURDAY) возвращается 2011-01-22 (через семь дней).

Это поведение подходит для использования с большинством календарных систем. Оно использует поле DAY_OF_WEEK и единицу DAYS, а также предполагает семидневную неделю.

Параметры:
dayOfWeek — день недели, на который нужно перенести дату, не null
Возвращает:
корректировку следующего дня недели, не null

nextOrSame

public static TemporalAdjuster nextOrSame(DayOfWeek dayOfWeek)
Возвращает корректировку следующего или текущего дня недели, которая изменяет дату на первое вхождение указанного дня недели после корректируемой даты, если только дата уже не приходится на этот день; в таком случае возвращается тот же объект.

В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 (суббота) и параметра (MONDAY) возвращается 2011-01-17 (через два дня).
Для входной даты 2011-01-15 (суббота) и параметра (WEDNESDAY) возвращается 2011-01-19 (через четыре дня).
Для входной даты 2011-01-15 (суббота) и параметра (SATURDAY) возвращается 2011-01-15 (как во входных данных).

Это поведение подходит для использования с большинством календарных систем. Оно использует поле DAY_OF_WEEK и единицу DAYS, а также предполагает семидневную неделю.

Параметры:
dayOfWeek — день недели для проверки или переноса даты, не null
Возвращает:
корректировку следующего или текущего дня недели, не null

previous

public static TemporalAdjuster previous(DayOfWeek dayOfWeek)
Возвращает корректировку предыдущего дня недели, которая изменяет дату на первое вхождение указанного дня недели перед корректируемой датой.

В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 (суббота) и параметра (MONDAY) возвращается 2011-01-10 (на пять дней раньше).
Для входной даты 2011-01-15 (суббота) и параметра (WEDNESDAY) возвращается 2011-01-12 (на три дня раньше).
Для входной даты 2011-01-15 (суббота) и параметра (SATURDAY) возвращается 2011-01-08 (на семь дней раньше).

Это поведение подходит для использования с большинством календарных систем. Оно использует поле DAY_OF_WEEK и единицу DAYS, а также предполагает семидневную неделю.

Параметры:
dayOfWeek — день недели, на который нужно перенести дату, не null
Возвращает:
корректировку предыдущего дня недели, не null

previousOrSame

public static TemporalAdjuster previousOrSame(DayOfWeek dayOfWeek)
Возвращает корректировку предыдущего или текущего дня недели, которая изменяет дату на первое вхождение указанного дня недели перед корректируемой датой, если только дата уже не приходится на этот день; в таком случае возвращается тот же объект.

В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 (суббота) и параметра (MONDAY) возвращается 2011-01-10 (на пять дней раньше).
Для входной даты 2011-01-15 (суббота) и параметра (WEDNESDAY) возвращается 2011-01-12 (на три дня раньше).
Для входной даты 2011-01-15 (суббота) и параметра (SATURDAY) возвращается 2011-01-15 (как во входных данных).

Это поведение подходит для использования с большинством календарных систем. Оно использует поле DAY_OF_WEEK и единицу DAYS, а также предполагает семидневную неделю.

Параметры:
dayOfWeek — день недели для проверки или переноса даты, не null
Возвращает:
корректировку предыдущего или текущего дня недели, не null

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры рабочего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/time/temporal/TemporalAdjusters.html

Spec-Zone.ru

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