Класс TemporalAdjusters
public final class TemporalAdjusters extends Object
Адаптеры — это ключевой инструмент для модификации временных объектов. Они предназначены для внешнего управления процессом корректировки, что позволяет применять различные подходы в соответствии с паттерном проектирования «стратегия». Примеры могут включать адаптер, устанавливающий дату, исключая выходные дни, или адаптер, устанавливающий дату на последнее число месяца.
Существует два эквивалентных способа использования 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
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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
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