Класс 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 (за 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