Класс TemporalAdjusters
public final class TemporalAdjusters extends Object
Корректоры — ключевой инструмент для изменения временных объектов. Они существуют, чтобы внешне выделить процесс корректировки, разрешая различные подходы, в соответствии с шаблоном проектирования стратегии. Примерами могут служить корректор, устанавливающий дату, избегая выходных дней, или корректор, устанавливающий дату на последнее число месяца.
Существует два равнозначных способа использования корректировщика. Первый — вызвать метод напрямую на интерфейсе. Второй — использовать 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
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static TemporalAdjuster |
dayOfWeekInMonth |
Возвращает корректор дня недели в месяце, который возвращает новую дату с порядковым днем недели, основанным на месяце. |
static TemporalAdjuster |
firstDayOfMonth() |
Возвращает корректор «первого числа месяца», который возвращает новую дату, установленную на первое число текущего месяца. |
static TemporalAdjuster |
firstDayOfNextMonth() |
Возвращает корректор «первого числа следующего месяца», который возвращает новую дату, установленную на первое число следующего месяца. |
static TemporalAdjuster |
firstDayOfNextYear() |
Возвращает корректор «первого числа следующего года», который возвращает новую дату, установленную на первое число следующего года. |
static TemporalAdjuster |
firstDayOfYear() |
Возвращает корректор «первого числа года», который возвращает новую дату, установленную на первое число текущего года. |
static TemporalAdjuster |
firstInMonth |
Возвращает корректор первого числа в месяце, который возвращает новую дату в том же месяце с первым соответствующим днем недели. |
static TemporalAdjuster |
lastDayOfMonth() |
Возвращает корректор «последнего числа месяца», который возвращает новую дату, установленную на последнее число текущего месяца. |
static TemporalAdjuster |
lastDayOfYear() |
Возвращает корректор «последнего числа года», который возвращает новую дату, установленную на последнее число текущего года. |
static TemporalAdjuster |
lastInMonth |
Возвращает корректор последнего числа в месяце, который возвращает новую дату в том же месяце с последним соответствующим днем недели. |
static TemporalAdjuster |
next |
Возвращает корректор следующего дня недели, который корректирует дату до первого появления указанного дня недели после корректируемой даты. |
static TemporalAdjuster |
nextOrSame |
Возвращает корректор следующего или того же дня недели, который корректирует дату до первого появления указанного дня недели после корректируемой даты, если он уже не в этот день, в противном случае возвращается тот же объект. |
static TemporalAdjuster |
ofDateAdjuster |
Получает TemporalAdjuster, который оборачивает корректор даты. |
static TemporalAdjuster |
previous |
Возвращает корректор предыдущего дня недели, который корректирует дату до первого появления указанного дня недели до корректируемой даты. |
static TemporalAdjuster |
previousOrSame |
Возвращает корректор предыдущего или того же дня недели, который корректирует дату до первого появления указанного дня недели до корректируемой даты, если он уже не в этот день, в противном случае возвращается тот же объект. |
Подробное описание методов
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