Класс 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 и параметра (MONDAY) возвращается 2011-12-05.
Для входной даты 2011-12-15 и параметра (FRIDAY) возвращается 2011-12-02.
Это поведение подходит для использования с большинством календарных систем. Оно использует поля DAY_OF_WEEK и DAY_OF_MONTH и единицу DAYS, а также предполагает семидневную неделю.
- Параметры:
-
dayOfWeek— день недели, не null - Возвращает:
- корректировку первого дня недели в месяце, не null
lastInMonth
public static TemporalAdjuster lastInMonth(DayOfWeek dayOfWeek)
В календарной системе ISO поведение следующее:
Для входной даты 2011-12-15 и параметра (MONDAY) возвращается 2011-12-26.
Для входной даты 2011-12-15 и параметра (FRIDAY) возвращается 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,TUESDAY) возвращается 2011-12-06.
Для входной даты 2011-12-15 и параметров (2,TUESDAY) возвращается 2011-12-13.
Для входной даты 2011-12-15 и параметров (3,TUESDAY) возвращается 2011-12-20.
Для входной даты 2011-12-15 и параметров (4,TUESDAY) возвращается 2011-12-27.
Для входной даты 2011-12-15 и параметров (5,TUESDAY) возвращается 2012-01-03.
Для входной даты 2011-12-15 и параметров (-1,TUESDAY) возвращается 2011-12-27 (последний день недели в месяце).
Для входной даты 2011-12-15 и параметров (-4,TUESDAY) возвращается 2011-12-06 (за 3 недели до последнего дня недели в месяце).
Для входной даты 2011-12-15 и параметров (-5,TUESDAY) возвращается 2011-11-29 (за 4 недели до последнего дня недели в месяце).
Для входной даты 2011-12-15 и параметров (0,TUESDAY) возвращается 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 (суббота) и параметра (MONDAY) возвращается 2011-01-17 (через два дня).
Для входной даты 2011-01-15 (суббота) и параметра (WEDNESDAY) возвращается 2011-01-19 (через четыре дня).
Для входной даты 2011-01-15 (суббота) и параметра (SATURDAY) возвращается 2011-01-22 (через семь дней).
Это поведение подходит для использования с большинством календарных систем. Оно использует поле DAY_OF_WEEK и единицу DAYS, а также предполагает семидневную неделю.
- Параметры:
-
dayOfWeek— день недели, на который нужно перенести дату, не null - Возвращает:
- корректировку следующего дня недели, не null
nextOrSame
public static TemporalAdjuster nextOrSame(DayOfWeek dayOfWeek)
В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 (суббота) и параметра (MONDAY) возвращается 2011-01-17 (через два дня).
Для входной даты 2011-01-15 (суббота) и параметра (WEDNESDAY) возвращается 2011-01-19 (через четыре дня).
Для входной даты 2011-01-15 (суббота) и параметра (SATURDAY) возвращается 2011-01-15 (как во входных данных).
Это поведение подходит для использования с большинством календарных систем. Оно использует поле DAY_OF_WEEK и единицу DAYS, а также предполагает семидневную неделю.
- Параметры:
-
dayOfWeek— день недели для проверки или переноса даты, не null - Возвращает:
- корректировку следующего или текущего дня недели, не null
previous
public static TemporalAdjuster previous(DayOfWeek dayOfWeek)
В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 (суббота) и параметра (MONDAY) возвращается 2011-01-10 (на пять дней раньше).
Для входной даты 2011-01-15 (суббота) и параметра (WEDNESDAY) возвращается 2011-01-12 (на три дня раньше).
Для входной даты 2011-01-15 (суббота) и параметра (SATURDAY) возвращается 2011-01-08 (на семь дней раньше).
Это поведение подходит для использования с большинством календарных систем. Оно использует поле DAY_OF_WEEK и единицу DAYS, а также предполагает семидневную неделю.
- Параметры:
-
dayOfWeek— день недели, на который нужно перенести дату, не null - Возвращает:
- корректировку предыдущего дня недели, не null
previousOrSame
public static TemporalAdjuster previousOrSame(DayOfWeek dayOfWeek)
В календарной системе ISO поведение следующее:
Для входной даты 2011-01-15 (суббота) и параметра (MONDAY) возвращается 2011-01-10 (на пять дней раньше).
Для входной даты 2011-01-15 (суббота) и параметра (WEDNESDAY) возвращается 2011-01-12 (на три дня раньше).
Для входной даты 2011-01-15 (суббота) и параметра (SATURDAY) возвращается 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/time/temporal/TemporalAdjusters.html