Класс TemporalAdjusters
- java.lang.Object
-
- java.time.temporal.TemporalAdjusters
public final class TemporalAdjusters extends Object
Общие и полезные TemporalAdjusters.
Adjusters являются ключевым инструментом для изменения временных объектов. Они существуют для того, чтобы внешне описать процесс корректировки, позволяя использовать разные подходы, в соответствии с шаблоном проектирования «стратегия». Примерами могут быть корректор, устанавливающий дату, избегая выходных дней, или корректор, устанавливающий дату на последнее число месяца.
Существует два эквивалентных способа использования 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
- См. также:
TemporalAdjuster
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
static TemporalAdjuster | dayOfWeekInMonth(int ordinal,
DayOfWeek dayOfWeek) | Возвращает корректор дня недели в месяце, который возвращает новую дату с порядковым днем недели, основанным на месяце. |
static TemporalAdjuster | firstDayOfMonth() | Возвращает корректор «первого числа месяца», который возвращает новую дату, установленную на первое число текущего месяца. |
static TemporalAdjuster | firstDayOfNextMonth() | Возвращает корректор «первого числа следующего месяца», который возвращает новую дату, установленную на первое число следующего месяца. |
static TemporalAdjuster | firstDayOfNextYear() | Возвращает корректор «первого числа следующего года», который возвращает новую дату, установленную на первое число следующего года. |
static TemporalAdjuster | firstDayOfYear() | Возвращает корректор «первого числа года», который возвращает новую дату, установленную на первое число текущего года. |
static TemporalAdjuster | firstInMonth(DayOfWeek dayOfWeek) | Возвращает корректор первого числа в месяце, который возвращает новую дату в том же месяце с первым совпадающим днем недели. |
static TemporalAdjuster | lastDayOfMonth() | Возвращает корректор «последнего числа месяца», который возвращает новую дату, установленную на последнее число текущего месяца. |
static TemporalAdjuster | lastDayOfYear() | Возвращает корректор «последнего числа года», который возвращает новую дату, установленную на последнее число текущего года. |
static TemporalAdjuster | lastInMonth(DayOfWeek dayOfWeek) | Возвращает корректор последнего числа в месяце, который возвращает новую дату в том же месяце с последним совпадающим днем недели. |
static TemporalAdjuster | next(DayOfWeek dayOfWeek) | Возвращает корректор следующего дня недели, который изменяет дату на первое вхождение указанного дня недели после корректируемой даты. |
static TemporalAdjuster | nextOrSame(DayOfWeek dayOfWeek) | Возвращает корректор следующего или того же дня недели, который изменяет дату на первое вхождение указанного дня недели после корректируемой даты, если эта дата уже находится в этот день недели, возвращается тот же объект. |
static TemporalAdjuster | ofDateAdjuster(UnaryOperator<LocalDate> dateBasedAdjuster) | Получает |
static TemporalAdjuster | previous(DayOfWeek dayOfWeek) | Возвращает корректор предыдущего дня недели, который изменяет дату на первое вхождение указанного дня недели перед корректируемой датой. |
static TemporalAdjuster | previousOrSame(DayOfWeek dayOfWeek) | Возвращает корректор предыдущего или того же дня недели, который изменяет дату на первое вхождение указанного дня недели до корректируемой даты, если эта дата уже находится в этот день недели, возвращается тот же объект. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Методы
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, и предполагает недельный цикл в 7 дней.
- Параметры:
-
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, и предполагает недельный цикл в 7 дней.
- Параметры:
-
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 (последний в предыдущем месяце).
Для положительного или нулевого порядкового номера алгоритм эквивалентен поиску первого дня недели, соответствующего в рамках месяца, и затем добавлению количества недель к нему. Для отрицательного порядкового номера алгоритм эквивалентен поиску последнего дня недели, соответствующего в рамках месяца, и затем вычитанию количества недель из него. Порядковый номер недель не валидируется и интерпретируется снисходительно в соответствии с этим алгоритмом. Это определение означает, что порядковый номер 0 находит последний соответствующий день недели в предыдущем месяце.
Поведение подходит для большинства систем календарей. Использует поля DAY_OF_WEEK и DAY_OF_MONTH и единицу DAYS, и предполагает недельный цикл в 7 дней.
- Параметры:
-
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, и предполагает недельный цикл в 7 дней.
- Параметры:
-
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, и предполагает недельный цикл в 7 дней.
- Параметры:
-
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, и предполагает недельный цикл в 7 дней.
- Параметры:
-
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, 2020, 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/11/docs/api/java.base/java/time/temporal/TemporalAdjusters.html