Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли другой объект этому объекту.
protected void finalize()
Устарел и будет удалён: этот элемент API может быть удалён в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного времени.

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

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, 2026, 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.

Spec-Zone.ru

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