Класс 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 |
Возвращает средство корректировки предыдущего или текущего дня недели, которое устанавливает дату на первое указанное вхождение дня недели перед корректируемой датой, если только дата уже не приходится на этот день; в таком случае возвращается тот же объект. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарел и будет удалён: этот элемент API может быть удалён в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного времени. |
Подробное описание методов
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.