Spec-Zone.ru › OpenJDK 24

Класс 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)
Возвращает адаптер предыдущего или того же дня недели, который корректирует дату до первого вхождения указанного дня недели перед корректируемой датой, если она уже не находится в этот день, в противном случае возвращает тот же объект.

Методы, объявленные в классе java.lang.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 для (ПОНЕДЕЛЬНИК) вернёт 2011-12-05.
Ввод 2011-12-15 для (ПЯТНИЦА) вернёт 2011-12-02.

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

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

lastInMonth

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

Система календаря ISO ведет себя следующим образом:
Ввод 2011-12-15 для (ПОНЕДЕЛЬНИК) вернёт 2011-12-26.
Ввод 2011-12-15 для (ПЯТНИЦА) вернёт 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,ВТОРНИК) вернёт 2011-12-06.
Ввод 2011-12-15 для (2,ВТОРНИК) вернёт 2011-12-13.
Ввод 2011-12-15 для (3,ВТОРНИК) вернёт 2011-12-20.
Ввод 2011-12-15 для (4,ВТОРНИК) вернёт 2011-12-27.
Ввод 2011-12-15 для (5,ВТОРНИК) вернёт 2012-01-03.
Ввод 2011-12-15 для (-1,ВТОРНИК) вернёт 2011-12-27 (последний в месяце).
Ввод 2011-12-15 для (-4,ВТОРНИК) вернёт 2011-12-06 (за 3 недели до последнего).
Ввод 2011-12-15 для (-5,ВТОРНИК) вернёт 2011-11-29 (за 4 недели до последнего).
Ввод 2011-12-15 для (0,ВТОРНИК) вернёт 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 (суббота) для параметра (ПОНЕДЕЛЬНИК) вернёт 2011-01-17 (через два дня).
Ввод 2011-01-15 (суббота) для параметра (СРЕДА) вернёт 2011-01-19 (через четыре дня).
Ввод 2011-01-15 (суббота) для параметра (СУББОТА) вернёт 2011-01-22 (через семь дней).

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

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

nextOrSame

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

Система календаря ISO ведет себя следующим образом:
Ввод 2011-01-15 (суббота) для параметра (ПОНЕДЕЛЬНИК) вернёт 2011-01-17 (через два дня).
Ввод 2011-01-15 (суббота) для параметра (СРЕДА) вернёт 2011-01-19 (через четыре дня).
Ввод 2011-01-15 (суббота) для параметра (СУББОТА) вернёт 2011-01-15 (то же, что и вход).

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

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

предыдущий

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

Система календаря ISO ведет себя следующим образом:
Вход 2011-01-15 (суббота) для параметра (ПОНЕДЕЛЬНИК) вернёт 2011-01-10 (на пять дней раньше).
Вход 2011-01-15 (суббота) для параметра (СРЕДА) вернёт 2011-01-12 (на три дня раньше).
Вход 2011-01-15 (суббота) для параметра (СУББОТА) вернёт 2011-01-08 (на семь дней раньше).

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

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

previousOrSame

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

Система календаря ISO ведет себя следующим образом:
Вход 2011-01-15 (суббота) для параметра (ПОНЕДЕЛЬНИК) вернёт 2011-01-10 (на пять дней раньше).
Вход 2011-01-15 (суббота) для параметра (СРЕДА) вернёт 2011-01-12 (на три дня раньше).
Вход 2011-01-15 (суббота) для параметра (СУББОТА) вернёт 2011-01-15 (такая же, как вход).

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

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

© 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/TemporalAdjusters.html

Spec-Zone.ru

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