Spec-Zone.ru › OpenJDK 21

Класс TemporalAdjusters

java.lang.Object
java.time.temporal.TemporalAdjusters
public final class TemporalAdjusters extends Object
Общие и полезные TemporalAdjusters.

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

Есть два эквивалентных способа использования корректировщика. Первый — вызвать метод непосредственно в интерфейсе. Второй — использовать 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

первыйДеньМесяца

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

Система календаря ISO ведет себя следующим образом:
Ввод 2011-01-15 вернет 2011-01-01.
Ввод 2011-02-15 вернет 2011-02-01.

Поведение подходит для использования с большинством систем календарей. Эквивалентно:

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

последнийДеньМесяца

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

первыйДеньСледующегоМесяца

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

первыйДеньГода

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

Система календаря ISO ведет себя следующим образом:
Ввод 2011-01-15 вернет 2011-01-01.
Ввод 2011-02-15 вернет 2011-01-01.

Поведение подходит для использования с большинством систем календарей. Эквивалентно:

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

последнийДеньГода

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

первыйДеньСледующегоГода

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

Система календаря ISO ведет себя следующим образом:
Ввод 2011-01-15 вернет 2012-01-01.

Поведение подходит для использования с большинством систем календарей. Эквивалентно:

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

первыйВМесяце

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

последнийВМесяце

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

деньНеделиВМесяце

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

следующий

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

следующийИлиТотЖе

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, 2023, 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/21/docs/api/java.base/java/time/temporal/TemporalAdjusters.html

Spec-Zone.ru

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