Spec-Zone.ru › OpenJDK 17

Класс 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 (за три недели до последнего в месяце).
Ввод 2011-12-15 для (-5,ВТОРНИК) вернёт 2011-11-29 (за четыре недели до последнего в месяце).
Ввод 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, 2021, 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/17/docs/api/java.base/java/time/temporal/TemporalAdjusters.html

Spec-Zone.ru

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