Класс LocalDate
- Все реализуемые интерфейсы:
Serializable, Comparable<ChronoLocalDate>, ChronoLocalDate, Temporal, TemporalAccessor, TemporalAdjuster
public final class LocalDate extends Object implements Temporal, TemporalAdjuster, ChronoLocalDate, Serializable
2007-12-03. LocalDate — неизменяемый объект даты и времени, представляющий дату, обычно рассматриваемую как год-месяц-день. Также можно получить доступ к другим полям даты, таким как день года, день недели и неделя года. Например, значение «2 октября 2007 года» можно сохранить в LocalDate.
Этот класс не хранит и не представляет время или часовой пояс. Вместо этого он описывает дату, например дату рождения. Он не может представлять момент на временной шкале без дополнительной информации, такой как смещение или часовой пояс.
Календарная система ISO-8601 — это современная гражданская календарная система, используемая сегодня в большинстве стран мира. Она эквивалентна пролептической григорианской календарной системе, в которой современные правила високосных лет применяются ко всему времени. Для большинства приложений, разрабатываемых сегодня, правила ISO-8601 вполне подходят. Однако приложения, использующие исторические даты и требующие их точности, обнаружат, что подход ISO-8601 не подходит.
Этот класс является классом, основанным на значениях; программистам следует считать экземпляры, которые равны, взаимозаменяемыми и не использовать экземпляры для синхронизации, иначе может возникнуть непредсказуемое поведение. Например, в одном из будущих выпусков синхронизация может завершиться неудачей. Для сравнения следует использовать метод equals.
- Требования к реализации:
- Этот класс неизменяемый и потокобезопасный.
- Начиная с версии:
- 1.8
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final LocalDate |
EPOCH |
Год начала эпохи LocalDate, «1970-01-01». |
static final LocalDate |
MAX |
Максимальная поддерживаемая дата LocalDate, «+999999999-12-31». |
static final LocalDate |
MIN |
Минимальная поддерживаемая дата LocalDate, «-999999999-01-01». |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Temporal |
adjustInto |
Настраивает указанный временной объект так, чтобы его дата совпадала с датой этого объекта. |
LocalDateTime |
atStartOfDay() |
Объединяет эту дату со временем полуночи, чтобы создать LocalDateTime в начале этой даты. |
ZonedDateTime |
atStartOfDay |
Возвращает дату и время с часовым поясом для этой даты в самое раннее допустимое время согласно правилам часового пояса. |
LocalDateTime |
atTime |
Объединяет эту дату со временем, чтобы создать LocalDateTime. |
LocalDateTime |
atTime |
Объединяет эту дату со временем, чтобы создать LocalDateTime. |
LocalDateTime |
atTime |
Объединяет эту дату со временем, чтобы создать LocalDateTime. |
LocalDateTime |
atTime |
Объединяет эту дату со временем, чтобы создать LocalDateTime. |
OffsetDateTime |
atTime |
Объединяет эту дату со временем со смещением, чтобы создать OffsetDateTime. |
int |
compareTo |
Сравнивает эту дату с другой датой. |
Stream |
datesUntil |
Возвращает упорядоченный последовательный поток дат. |
Stream |
datesUntil |
Возвращает упорядоченный последовательный поток дат с указанным шагом приращения. |
boolean |
equals |
Проверяет, равна ли эта дата другой дате. |
String |
format |
Форматирует эту дату с помощью указанного форматтера. |
static LocalDate |
from |
Получает экземпляр LocalDate из временного объекта. |
int |
get |
Получает значение указанного поля этой даты в виде int. |
IsoChronology |
getChronology() |
Получает хронологию этой даты, то есть календарную систему ISO. |
int |
getDayOfMonth() |
Получает поле дня месяца. |
DayOfWeek |
getDayOfWeek() |
Получает поле дня недели, представленное перечислением DayOfWeek. |
int |
getDayOfYear() |
Получает поле дня года. |
IsoEra |
getEra() |
Получает эру, действующую на эту дату. |
long |
getLong |
Получает значение указанного поля этой даты в виде long. |
Month |
getMonth() |
Получает поле месяца года с использованием перечисления Month. |
int |
getMonthValue() |
Получает поле месяца года в диапазоне от 1 до 12. |
int |
getYear() |
Получает поле года. |
int |
hashCode() |
Хеш-код этой даты. |
boolean |
isAfter |
Проверяет, находится ли эта дата после указанной даты. |
boolean |
isBefore |
Проверяет, находится ли эта дата до указанной даты. |
boolean |
isEqual |
Проверяет, совпадает ли эта дата с указанной датой. |
boolean |
isLeapYear() |
Проверяет, является ли год високосным согласно правилам пролептической календарной системы ISO. |
boolean |
isSupported |
Проверяет, поддерживается ли указанное поле. |
boolean |
isSupported |
Проверяет, поддерживается ли указанная единица измерения. |
int |
lengthOfMonth() |
Возвращает продолжительность месяца, представленного этой датой. |
int |
lengthOfYear() |
Возвращает продолжительность года, представленного этой датой. |
LocalDate |
minus |
Возвращает копию этой даты с вычтенным указанным значением. |
LocalDate |
minus |
Возвращает копию этой даты с вычтенным указанным значением. |
LocalDate |
minusDays |
Возвращает копию этого LocalDate с вычтенным указанным количеством дней. |
LocalDate |
minusMonths |
Возвращает копию этого LocalDate с вычтенным указанным количеством месяцев. |
LocalDate |
minusWeeks |
Возвращает копию этого LocalDate с вычтенным указанным количеством недель. |
LocalDate |
minusYears |
Возвращает копию этого LocalDate с вычтенным указанным количеством лет. |
static LocalDate |
now() |
Получает текущую дату по системным часам в часовом поясе по умолчанию. |
static LocalDate |
now |
Получает текущую дату по указанным часам. |
static LocalDate |
now |
Получает текущую дату по системным часам в указанном часовом поясе. |
static LocalDate |
of |
Получает экземпляр LocalDate из года, месяца и дня. |
static LocalDate |
of |
Получает экземпляр LocalDate из года, месяца и дня. |
static LocalDate |
ofEpochDay |
Получает экземпляр LocalDate из количества дней эпохи. |
static LocalDate |
ofInstant |
Получает экземпляр LocalDate из Instant и идентификатора часового пояса. |
static LocalDate |
ofYearDay |
Получает экземпляр LocalDate из года и дня года. |
static LocalDate |
parse |
Получает экземпляр LocalDate из текстовой строки, например 2007-12-03. |
static LocalDate |
parse |
Получает экземпляр LocalDate из текстовой строки с помощью заданного форматтера. |
LocalDate |
plus |
Возвращает копию этой даты с добавленным указанным значением. |
LocalDate |
plus |
Возвращает копию этой даты с добавленным указанным значением. |
LocalDate |
plusDays |
Возвращает копию этого LocalDate с добавленным указанным количеством дней. |
LocalDate |
plusMonths |
Возвращает копию этого LocalDate с добавленным указанным количеством месяцев. |
LocalDate |
plusWeeks |
Возвращает копию этого LocalDate с добавленным указанным количеством недель. |
LocalDate |
plusYears |
Возвращает копию этого LocalDate с добавленным указанным количеством лет. |
<R> R |
query |
Выполняет запрос к этой дате с помощью указанного запроса. |
ValueRange |
range |
Получает диапазон допустимых значений для указанного поля. |
long |
toEpochSecond |
Преобразует этот LocalDate в количество секунд, прошедших с начала эпохи 1970-01-01T00:00:00Z. |
String |
toString() |
Выводит эту дату в виде String, например 2007-12-03. |
Period |
until |
Вычисляет период между этой датой и другой датой в виде Period. |
long |
until |
Вычисляет время до другой даты в указанных единицах измерения. |
LocalDate |
with |
Возвращает скорректированную копию этой даты. |
LocalDate |
with |
Возвращает копию этой даты, в которой указанному полю присвоено новое значение. |
LocalDate |
withDayOfMonth |
Возвращает копию этого LocalDate с измененным днем месяца. |
LocalDate |
withDayOfYear |
Возвращает копию этого LocalDate с измененным днем года. |
LocalDate |
withMonth |
Возвращает копию этого LocalDate с измененным месяцем года. |
LocalDate |
withYear |
Возвращает копию этого LocalDate с измененным годом. |
Методы, объявленные в интерфейсе ChronoLocalDate
toEpochDay
Подробное описание полей
MIN
public static final LocalDate MIN
LocalDate, '-999999999-01-01'. Приложение может использовать его как дату «далёкого прошлого».MAX
public static final LocalDate MAX
LocalDate, '+999999999-12-31'. Приложение может использовать его как дату «далёкого будущего».EPOCH
public static final LocalDate EPOCH
LocalDate, '1970-01-01'.- Начиная с:
- 9
Подробное описание методов
now
public static LocalDate now()
Для получения текущей даты выполняется запрос к system clock в часовом поясе по умолчанию.
Использование этого метода не позволяет применять альтернативные часы для тестирования, поскольку часы заданы жёстко.
- Возвращает:
- текущую дату по системным часам и в часовом поясе по умолчанию; значение не равно null
now
public static LocalDate now(ZoneId zone)
Для получения текущей даты выполняется запрос к system clock. Указание часового пояса позволяет избежать зависимости от часового пояса по умолчанию.
Использование этого метода не позволяет применять альтернативные часы для тестирования, поскольку часы заданы жёстко.
- Параметры:
-
zone— идентификатор часового пояса, который следует использовать; не null - Возвращает:
- текущую дату по системным часам; значение не равно null
now
public static LocalDate now(Clock clock)
Для получения текущей даты — сегодняшнего дня — выполняется запрос к указанным часам. Использование этого метода позволяет применять альтернативные часы для тестирования. Альтернативные часы можно создать с помощью dependency injection.
- Параметры:
-
clock— часы, которые следует использовать; не null - Возвращает:
- текущую дату; значение не равно null
of
public static LocalDate of(int year, Month month, int dayOfMonth)
LocalDate на основе года, месяца и дня. Возвращает LocalDate с указанными годом, месяцем и днём месяца. День должен быть допустимым для указанного года и месяца, иначе будет выброшено исключение.
- Параметры:
-
year— представляемый год, от MIN_YEAR до MAX_YEAR -
month— представляемый месяц года; не null -
dayOfMonth— представляемый день месяца, от 1 до 31 - Возвращает:
- локальную дату; значение не равно null
- Выбрасывает:
-
DateTimeException— если значение какого-либо поля выходит за допустимый диапазон или день месяца недопустим для указанного года и месяца
of
public static LocalDate of(int year, int month, int dayOfMonth)
LocalDate на основе года, месяца и дня. Возвращает LocalDate с указанными годом, месяцем и днём месяца. День должен быть допустимым для указанного года и месяца, иначе будет выброшено исключение.
- Параметры:
-
year— представляемый год, от MIN_YEAR до MAX_YEAR -
month— представляемый месяц года, от 1 (январь) до 12 (декабрь) -
dayOfMonth— представляемый день месяца, от 1 до 31 - Возвращает:
- локальную дату; значение не равно null
- Выбрасывает:
-
DateTimeException— если значение какого-либо поля выходит за допустимый диапазон или день месяца недопустим для указанного года и месяца
ofYearDay
public static LocalDate ofYearDay(int year, int dayOfYear)
LocalDate на основе года и дня года. Возвращает LocalDate с указанными годом и днём года. День года должен быть допустимым для указанного года, иначе будет выброшено исключение.
- Параметры:
-
year— представляемый год, от MIN_YEAR до MAX_YEAR -
dayOfYear— представляемый день года, от 1 до 366 - Возвращает:
- локальную дату; значение не равно null
- Выбрасывает:
-
DateTimeException— если значение какого-либо поля выходит за допустимый диапазон или день года недопустим для указанного года
ofInstant
public static LocalDate ofInstant(Instant instant, ZoneId zone)
LocalDate на основе объекта Instant и идентификатора часового пояса. Создаёт локальную дату на основе указанного момента времени. Сначала по идентификатору часового пояса и моменту времени определяется смещение относительно UTC/Гринвича. Это просто, поскольку для каждого момента времени допустимо только одно смещение. Затем момент времени и смещение используются для вычисления локальной даты.
- Параметры:
-
instant— момент времени, на основе которого создаётся дата; не null -
zone— часовой пояс, которым может быть смещение; не null - Возвращает:
- локальную дату; значение не равно null
- Выбрасывает:
-
DateTimeException— если результат выходит за поддерживаемый диапазон - Начиная с:
- 9
ofEpochDay
public static LocalDate ofEpochDay(long epochDay)
LocalDate на основе количества дней эпохи. Возвращает LocalDate с указанным днём эпохи. EPOCH_DAY — это простой возрастающий отсчёт дней, в котором день 0 соответствует 1970-01-01. Отрицательные числа обозначают более ранние дни.
- Параметры:
-
epochDay— день эпохи для преобразования, отсчитываемый от эпохи 1970-01-01 - Возвращает:
- локальную дату; значение не равно null
- Выбрасывает:
-
DateTimeException— если день эпохи выходит за поддерживаемый диапазон дат
from
public static LocalDate from(TemporalAccessor temporal)
LocalDate на основе временного объекта. Получает локальную дату на основе указанного временного объекта. TemporalAccessor представляет произвольный набор сведений о дате и времени, который эта фабрика преобразует в экземпляр LocalDate.
Для преобразования используется запрос TemporalQueries.localDate(), основанный на извлечении поля EPOCH_DAY.
Сигнатура этого метода соответствует функциональному интерфейсу TemporalQuery, что позволяет использовать его как запрос через ссылку на метод, LocalDate::from.
- Параметры:
-
temporal— временной объект для преобразования; не null - Возвращает:
- локальную дату; значение не равно null
- Выбрасывает:
-
DateTimeException— если преобразовать вLocalDateневозможно
parse
public static LocalDate parse(CharSequence text)
LocalDate на основе текстовой строки, например 2007-12-03. Строка должна представлять допустимую дату и разбирается с помощью DateTimeFormatter.ISO_LOCAL_DATE.
- Параметры:
-
text— текст для разбора, например "2007-12-03"; не null - Возвращает:
- разобранную локальную дату; значение не равно null
- Выбрасывает:
-
DateTimeParseException— если текст не удаётся разобрать
parse
public static LocalDate parse(CharSequence text, DateTimeFormatter formatter)
LocalDate на основе текстовой строки с использованием заданного форматировщика. Текст разбирается с помощью форматировщика, в результате чего возвращается дата.
- Параметры:
-
text— текст для разбора; не null -
formatter— форматировщик, который следует использовать; не null - Возвращает:
- разобранную локальную дату; значение не равно null
- Выбрасывает:
-
DateTimeParseException— если текст не удаётся разобрать
isSupported
public boolean isSupported(TemporalField field)
Проверяет, можно ли запросить у этой даты значение указанного поля. Если результат — false, вызовы методов range, get и with(TemporalField, long) приведут к выбросу исключения.
Если поле является ChronoField, запрос реализуется здесь. Поддерживаются следующие поля:
-
DAY_OF_WEEK -
ALIGNED_DAY_OF_WEEK_IN_MONTH -
ALIGNED_DAY_OF_WEEK_IN_YEAR -
DAY_OF_MONTH -
DAY_OF_YEAR -
EPOCH_DAY -
ALIGNED_WEEK_OF_MONTH -
ALIGNED_WEEK_OF_YEAR -
MONTH_OF_YEAR -
PROLEPTIC_MONTH -
YEAR_OF_ERA -
YEAR -
ERA
ChronoField возвращается false. Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.isSupportedBy(TemporalAccessor) с передачей this в качестве аргумента. Поддерживается ли поле, определяет само поле.
- Определено в:
-
isSupportedв интерфейсеChronoLocalDate - Определено в:
-
isSupportedв интерфейсеTemporalAccessor - Параметры:
-
field— поле для проверки; null означает false - Возвращает:
- true, если это поле поддерживается для данной даты; в противном случае false
isSupported
public boolean isSupported(TemporalUnit unit)
Проверяет, можно ли прибавить указанную единицу измерения к этой дате или вычесть её из неё. Если результат — false, вызовы методов plus(long, TemporalUnit) и minus приведут к выбросу исключения.
Если единица измерения является ChronoUnit, запрос реализуется здесь. Поддерживаются следующие единицы измерения:
-
DAYS -
WEEKS -
MONTHS -
YEARS -
DECADES -
CENTURIES -
MILLENNIA -
ERAS
ChronoUnit возвращается false. Если единица измерения не является ChronoUnit, результат этого метода получается вызовом TemporalUnit.isSupportedBy(Temporal) с передачей this в качестве аргумента. Поддерживается ли единица измерения, определяет сама единица.
- Определено в:
-
isSupportedв интерфейсеChronoLocalDate - Определено в:
-
isSupportedв интерфейсеTemporal - Параметры:
-
unit— единица измерения для проверки; null означает false - Возвращает:
- true, если единицу измерения можно прибавить или вычесть; в противном случае false
range
public ValueRange range(TemporalField field)
Объект диапазона задаёт минимальное и максимальное допустимые значения поля. Эта дата используется для повышения точности возвращаемого диапазона. Если вернуть диапазон невозможно, поскольку поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.
Если поле является ChronoField, запрос реализуется здесь. Метод supported fields возвращает соответствующие экземпляры диапазона. Для всех остальных экземпляров ChronoField выбрасывается исключение UnsupportedTemporalTypeException.
Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.rangeRefinedBy(TemporalAccessor) с передачей this в качестве аргумента. Возможность получения диапазона определяется самим полем.
- Определено в:
-
rangeв интерфейсеTemporalAccessor - Параметры:
-
field— поле, диапазон которого требуется запросить; не null - Возвращает:
- диапазон допустимых значений поля; не null
- Выбрасывает:
-
DateTimeException— если получить диапазон поля невозможно -
UnsupportedTemporalTypeException— если поле не поддерживается
get
public int get(TemporalField field)
int. Запрашивает у этой даты значение указанного поля. Возвращаемое значение всегда находится в допустимом диапазоне значений этого поля. Если вернуть значение невозможно, поскольку поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.
Если поле является ChronoField, запрос реализуется здесь. Метод supported fields возвращает допустимые для этой даты значения, кроме EPOCH_DAY и PROLEPTIC_MONTH, которые слишком велики для представления в int и приводят к выбросу исключения UnsupportedTemporalTypeException. Для всех остальных экземпляров ChronoField выбрасывается исключение UnsupportedTemporalTypeException.
Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.getFrom(TemporalAccessor) с передачей this в качестве аргумента. Возможность получения значения и его смысл определяются самим полем.
- Определено в:
-
getв интерфейсеTemporalAccessor - Параметры:
-
field— поле для получения значения; не null - Возвращает:
- значение поля
- Выбрасывает:
-
DateTimeException— если значение поля невозможно получить или оно выходит за допустимый диапазон значений этого поля -
UnsupportedTemporalTypeException— если поле не поддерживается или диапазон значений превышаетint -
ArithmeticException— при арифметическом переполнении
getLong
public long getLong(TemporalField field)
long. Запрашивает у этой даты значение указанного поля. Если вернуть значение невозможно, поскольку поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.
Если поле является ChronoField, запрос реализуется здесь. Метод supported fields возвращает допустимые для этой даты значения. Для всех остальных экземпляров ChronoField выбрасывается исключение UnsupportedTemporalTypeException.
Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.getFrom(TemporalAccessor) с передачей this в качестве аргумента. Возможность получения значения и его смысл определяются самим полем.
- Определено в:
-
getLongв интерфейсеTemporalAccessor - Параметры:
-
field— поле для получения значения; не null - Возвращает:
- значение поля
- Выбрасывает:
-
DateTimeException— если значение поля невозможно получить -
UnsupportedTemporalTypeException— если поле не поддерживается -
ArithmeticException— при арифметическом переполнении
getChronology
public IsoChronology getChronology()
Chronology представляет используемую календарную систему. Календарная система ISO-8601 — современная гражданская календарная система, используемая сегодня в большинстве стран мира. Она эквивалентна пролептической григорианской календарной системе, в которой современные правила високосных лет применяются ко всему временному диапазону.
- Определено в:
-
getChronologyв интерфейсеChronoLocalDate - Возвращает:
- хронологию ISO; не null
getEra
public IsoEra getEra()
Официальный стандарт ISO-8601 не определяет эры, однако IsoChronology определяет. Он задаёт две эры: «CE» — начиная с первого года, и «BCE» — от нулевого года в прошлое. Поскольку даты до перехода от юлианского календаря к григорианскому не соответствуют историческим датам, граница между «BCE» и «CE» также не совпадает с общепринятой границей эр, которые часто обозначают «BC» и «AD».
Пользователям этого класса обычно следует игнорировать данный метод, поскольку он существует главным образом для выполнения контракта ChronoLocalDate, который необходим для поддержки японской календарной системы.
- Определено в:
-
getEraв интерфейсеChronoLocalDate - Возвращает:
- эра IsoEra, соответствующая этой дате; не null
getYear
public int getYear()
Этот метод возвращает примитивное значение int, соответствующее году.
Возвращаемый этим методом год является пролептическим согласно get(YEAR). Чтобы получить год эры, используйте get(YEAR_OF_ERA).
- Возвращает:
- год, от MIN_YEAR до MAX_YEAR
getMonthValue
public int getMonthValue()
Этот метод возвращает месяц в виде значения int в диапазоне от 1 до 12. В прикладном коде часто понятнее использовать перечисление Month, вызывая getMonth().
- Возвращает:
- месяц года, от 1 до 12
- См. также:
getMonth
public Month getMonth()
Month. Этот метод возвращает для месяца элемент перечисления Month. Это позволяет избежать неоднозначности значений int. Если требуется доступ к примитивному значению int, перечисление предоставляет метод int value.
- Возвращает:
- месяц года; не null
- См. также:
getDayOfMonth
public int getDayOfMonth()
Этот метод возвращает примитивное значение int, соответствующее дню месяца.
- Возвращает:
- день месяца, от 1 до 31
getDayOfYear
public int getDayOfYear()
Этот метод возвращает примитивное значение int, соответствующее дню года.
- Возвращает:
- день года, от 1 до 365 или 366 в високосном году
getDayOfWeek
public DayOfWeek getDayOfWeek()
DayOfWeek. Этот метод возвращает для дня недели элемент перечисления DayOfWeek. Это позволяет избежать неоднозначности значений int. Если требуется доступ к примитивному значению int, перечисление предоставляет метод int value.
Дополнительную информацию можно получить из DayOfWeek. В неё входят текстовые названия значений.
- Возвращает:
- день недели; не null
isLeapYear
public boolean isLeapYear()
Этот метод применяет действующие правила високосных лет ко всей временной шкале. В общем случае год является високосным, если он делится на четыре без остатка. Однако годы, делящиеся на 100, не являются високосными, за исключением годов, делящихся на 400.
Например, 1904 год является високосным, поскольку делится на 4. 1900 год не был високосным, поскольку делится на 100, однако 2000 год был високосным, поскольку делится на 400.
Вычисление является пролептическим: одни и те же правила применяются к далёкому будущему и далёкому прошлому. С исторической точки зрения это неточно, но соответствует стандарту ISO-8601.
- Определено в:
-
isLeapYearв интерфейсеChronoLocalDate - Возвращает:
- true, если год високосный; в противном случае false
lengthOfMonth
public int lengthOfMonth()
Возвращает количество дней в месяце. Например, для даты в январе возвращается 31.
- Определено в:
-
lengthOfMonthв интерфейсеChronoLocalDate - Возвращает:
- количество дней в месяце
lengthOfYear
public int lengthOfYear()
Возвращает количество дней в году: 365 или 366.
- Определено в:
-
lengthOfYearв интерфейсеChronoLocalDate - Возвращает:
- 366, если год високосный; в противном случае 365
with
public LocalDate with(TemporalAdjuster adjuster)
Возвращает LocalDate на основе этой даты с изменёнными значениями даты. Корректировка выполняется с помощью указанного объекта стратегии корректировки. Ознакомьтесь с документацией корректировщика, чтобы понять, какие изменения будут выполнены.
Простой корректировщик может изменить значение одного из полей, например года. Более сложный корректировщик может установить дату на последний день месяца.
Набор распространённых корректировок предоставляется классом TemporalAdjusters. Среди них — поиск «последнего дня месяца» и «следующей среды». Важные классы даты и времени также реализуют интерфейс TemporalAdjuster, например Month и MonthDay. Корректировщик отвечает за обработку особых случаев, таких как разная продолжительность месяцев и високосные годы.
Например, следующий код возвращает дату, соответствующую последнему дню июля:
import static java.time.Month.*; import static java.time.temporal.TemporalAdjusters.*; result = localDate.with(JULY).with(lastDayOfMonth());
Результат этого метода получается вызовом метода TemporalAdjuster.adjustInto(Temporal) указанного корректировщика с передачей this в качестве аргумента.
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Определено в:
-
withв интерфейсеChronoLocalDate - Определено в:
-
withв интерфейсеTemporal - Параметры:
-
adjuster— корректировщик, который следует использовать; не null - Возвращает:
- экземпляр
LocalDateна основеthisс применённой корректировкой; не null - Выбрасывает:
-
DateTimeException— если корректировку невозможно выполнить -
ArithmeticException— при арифметическом переполнении
with
public LocalDate with(TemporalField field, long newValue)
Возвращает LocalDate на основе этой даты, в которой изменено значение указанного поля. Это можно использовать для изменения любого поддерживаемого поля, например года, месяца или дня месяца. Если установить значение невозможно, поскольку поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.
В некоторых случаях изменение указанного поля может привести к недопустимой результирующей дате. Например, изменение месяца с 31 января на февраль сделает день месяца недопустимым. В таких случаях за разрешение даты отвечает поле. Обычно оно выбирает предыдущую допустимую дату, то есть в этом примере последний допустимый день февраля.
Если поле является ChronoField, корректировка выполняется здесь. Поддерживаемые поля ведут себя следующим образом:
-
DAY_OF_WEEK— возвращаетLocalDateс указанным днем недели. Дата корректируется не более чем на 6 дней вперед или назад в пределах недели с понедельника по воскресенье. -
ALIGNED_DAY_OF_WEEK_IN_MONTH— возвращаетLocalDateс указанным выровненным днем недели. Дата корректируется до указанного выровненного дня недели в пределах месяца. Выровненные недели отсчитываются так, что первая неделя данного месяца начинается в первый день этого месяца. Это может привести к смещению даты не более чем на 6 дней в следующий месяц. -
ALIGNED_DAY_OF_WEEK_IN_YEAR— возвращаетLocalDateс указанным выровненным днем недели. Дата корректируется до указанного выровненного дня недели в пределах года. Выровненные недели отсчитываются так, что первая неделя данного года начинается в первый день этого года. Это может привести к смещению даты не более чем на 6 дней в следующий год. -
DAY_OF_MONTH— возвращаетLocalDateс указанным днем месяца. Месяц и год не изменяются. Если день месяца недопустим для данного года и месяца, выбрасываетсяDateTimeException. -
DAY_OF_YEAR— возвращаетLocalDateс указанным днем года. Год не изменяется. Если день года недопустим для данного года, выбрасываетсяDateTimeException. -
EPOCH_DAY— возвращаетLocalDateс указанным днем эпохи. Это полностью заменяет дату и эквивалентноofEpochDay(long). -
ALIGNED_WEEK_OF_MONTH— возвращаетLocalDateс указанной выровненной неделей месяца. Выровненные недели отсчитываются так, что первая неделя данного месяца начинается в первый день этого месяца. При корректировке дата перемещается целыми неделями, чтобы соответствовать указанной неделе. Результат будет иметь тот же день недели, что и эта дата. Это может привести к смещению даты на следующий месяц. -
ALIGNED_WEEK_OF_YEAR— возвращаетLocalDateс указанной выровненной неделей года. Выровненные недели отсчитываются так, что первая неделя данного года начинается в первый день этого года. При корректировке дата перемещается целыми неделями, чтобы соответствовать указанной неделе. Результат будет иметь тот же день недели, что и эта дата. Это может привести к смещению даты на следующий год. -
MONTH_OF_YEAR— возвращаетLocalDateс указанным месяцем года. Год не изменяется. День месяца также не изменяется, если только он не окажется недопустимым для нового месяца и года. В этом случае день месяца корректируется до наибольшего допустимого значения для нового месяца и года. -
PROLEPTIC_MONTH— возвращаетLocalDateс указанным пролептическим месяцем. День месяца не изменяется, если только он не окажется недопустимым для нового месяца и года. В этом случае день месяца корректируется до наибольшего допустимого значения для нового месяца и года. -
YEAR_OF_ERA— возвращаетLocalDateс указанным годом эры. Эра и месяц не изменяются. День месяца также не изменяется, если только он не окажется недопустимым для нового месяца и года. В этом случае день месяца корректируется до наибольшего допустимого значения для нового месяца и года. -
YEAR— возвращаетLocalDateс указанным годом. Месяц не изменяется. День месяца также не изменяется, если только он не окажется недопустимым для нового месяца и года. В этом случае день месяца корректируется до наибольшего допустимого значения для нового месяца и года. -
ERA— возвращаетLocalDateс указанной эрой. Год эры и месяц не изменяются. День месяца также не изменяется, если только он не окажется недопустимым для нового месяца и года. В этом случае день месяца корректируется до наибольшего допустимого значения для нового месяца и года.
Во всех случаях, если новое значение выходит за допустимый диапазон значений поля, выбрасывается DateTimeException.
Для всех остальных экземпляров ChronoField выбрасывается UnsupportedTemporalTypeException.
Если поле не является ChronoField, результат этого метода получается путем вызова TemporalField.adjustInto(Temporal, long) с передачей this в качестве аргумента. В этом случае поле определяет, следует ли корректировать момент времени и каким образом.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Указано в:
-
withв интерфейсеChronoLocalDate - Указано в:
-
withв интерфейсеTemporal - Параметры:
-
field— поле, значение которого задается в результате; не null -
newValue— новое значение поля в результате - Возвращает:
LocalDateна основеthisс заданным значением указанного поля; не null- Выбрасывает:
-
DateTimeException— если значение поля невозможно задать -
UnsupportedTemporalTypeException— если поле не поддерживается -
ArithmeticException— при переполнении числового значения
withYear
public LocalDate withYear(int year)
LocalDate с измененным годом. Если день месяца недопустим для этого года, он будет заменен последним допустимым днем месяца.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
year— год, который задается в результате; от MIN_YEAR до MAX_YEAR - Возвращает:
LocalDateна основе этой даты с указанным годом; не null- Выбрасывает:
-
DateTimeException— если значение года недопустимо
withMonth
public LocalDate withMonth(int month)
LocalDate с измененным месяцем года. Если день месяца недопустим для этого года, он будет заменен последним допустимым днем месяца.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
month— месяц года, который задается в результате; от 1 (январь) до 12 (декабрь) - Возвращает:
LocalDateна основе этой даты с указанным месяцем; не null- Выбрасывает:
-
DateTimeException— если значение месяца года недопустимо
withDayOfMonth
public LocalDate withDayOfMonth(int dayOfMonth)
LocalDate с измененным днем месяца. Если результирующая дата недопустима, выбрасывается исключение.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
dayOfMonth— день месяца, который задается в результате; от 1 до 28–31 - Возвращает:
LocalDateна основе этой даты с указанным днем; не null- Выбрасывает:
-
DateTimeException— если значение дня месяца недопустимо или если день месяца недопустим для месяца и года
withDayOfYear
public LocalDate withDayOfYear(int dayOfYear)
LocalDate с измененным днем года. Если результирующая дата недопустима, выбрасывается исключение.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
dayOfYear— день года, который задается в результате; от 1 до 365–366 - Возвращает:
LocalDateна основе этой даты с указанным днем; не null- Выбрасывает:
-
DateTimeException— если значение дня года недопустимо или если день года недопустим для этого года
plus
public LocalDate plus(TemporalAmount amountToAdd)
Возвращает LocalDate на основе этой даты с добавленной указанной величиной. Обычно величина представляет собой Period, но может иметь и другой тип, реализующий интерфейс TemporalAmount.
Вычисление делегируется объекту величины путем вызова TemporalAmount.addTo(Temporal). Реализация величины может выполнять сложение любым способом, однако обычно она вызывает plus(long, TemporalUnit). Чтобы определить, можно ли успешно добавить величину, обратитесь к документации ее реализации.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Указано в:
-
plusв интерфейсеChronoLocalDate - Указано в:
-
plusв интерфейсеTemporal - Параметры:
-
amountToAdd— величина, которую нужно добавить; не null - Возвращает:
LocalDateна основе этой даты с выполненным сложением; не null- Выбрасывает:
-
DateTimeException— если сложение невозможно выполнить -
ArithmeticException— при переполнении числового значения
plus
public LocalDate plus(long amountToAdd, TemporalUnit unit)
Возвращает LocalDate на основе этой даты с добавленной величиной в единицах указанной единицы измерения. Если добавить величину невозможно, поскольку единица измерения не поддерживается или по какой-либо другой причине, выбрасывается исключение.
В некоторых случаях добавление величины может привести к недопустимой результирующей дате. Например, добавление одного месяца к 31 января приведет к 31 февраля. В таких случаях за разрешение даты отвечает единица измерения. Обычно она выбирает предыдущую допустимую дату, то есть в этом примере последний допустимый день февраля.
Если поле является ChronoUnit, сложение выполняется здесь. Поддерживаемые поля ведут себя следующим образом:
-
DAYS— возвращаетLocalDateс добавленным указанным количеством дней. ЭквивалентноplusDays(long). -
WEEKS— возвращаетLocalDateс добавленным указанным количеством недель. ЭквивалентноplusWeeks(long); продолжительность недели составляет 7 дней. -
MONTHS— возвращаетLocalDateс добавленным указанным количеством месяцев. ЭквивалентноplusMonths(long). День месяца не изменяется, если только он не окажется недопустимым для нового месяца и года. В этом случае день месяца корректируется до наибольшего допустимого значения для нового месяца и года. -
YEARS— возвращаетLocalDateс добавленным указанным количеством лет. ЭквивалентноplusYears(long). День месяца не изменяется, если только он не окажется недопустимым для нового месяца и года. В этом случае день месяца корректируется до наибольшего допустимого значения для нового месяца и года. -
DECADES— возвращаетLocalDateс добавленным указанным количеством десятилетий. Эквивалентно вызовуplusYears(long)с величиной, умноженной на 10. День месяца не изменяется, если только он не окажется недопустимым для нового месяца и года. В этом случае день месяца корректируется до наибольшего допустимого значения для нового месяца и года. -
CENTURIES— возвращаетLocalDateс добавленным указанным количеством столетий. Эквивалентно вызовуplusYears(long)с величиной, умноженной на 100. День месяца не изменяется, если только он не окажется недопустимым для нового месяца и года. В этом случае день месяца корректируется до наибольшего допустимого значения для нового месяца и года. -
MILLENNIA— возвращаетLocalDateс добавленным указанным количеством тысячелетий. Эквивалентно вызовуplusYears(long)с величиной, умноженной на 1 000. День месяца не изменяется, если только он не окажется недопустимым для нового месяца и года. В этом случае день месяца корректируется до наибольшего допустимого значения для нового месяца и года. -
ERAS— возвращаетLocalDateс добавленным указанным количеством эр. Поддерживаются только две эры, поэтому величина должна быть равна единице, нулю или минус единице. Если величина не равна нулю, год изменяется так, чтобы год эры остался неизменным. День месяца не изменяется, если только он не окажется недопустимым для нового месяца и года. В этом случае день месяца корректируется до наибольшего допустимого значения для нового месяца и года.
Для всех остальных экземпляров ChronoUnit выбрасывается UnsupportedTemporalTypeException.
Если поле не является ChronoUnit, результат этого метода получается путем вызова TemporalUnit.addTo(Temporal, long) с передачей this в качестве аргумента. В этом случае единица измерения определяет, следует ли выполнять сложение и каким образом.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Указано в:
-
plusв интерфейсеChronoLocalDate - Указано в:
-
plusв интерфейсеTemporal - Параметры:
-
amountToAdd— количество единиц измерения, добавляемых к результату; может быть отрицательным -
unit— единица измерения величины, которую нужно добавить; не null - Возвращает:
LocalDateна основе этой даты с добавленной указанной величиной; не null- Выбрасывает:
-
DateTimeException— если сложение невозможно выполнить -
UnsupportedTemporalTypeException— если единица измерения не поддерживается -
ArithmeticException— при переполнении числового значения
plusYears
public LocalDate plusYears(long yearsToAdd)
LocalDate с добавленным указанным количеством лет. Этот метод добавляет указанную величину к полю года в три этапа:
- Добавить введенное количество лет к полю года
- Проверить, не будет ли результирующая дата недопустимой
- При необходимости скорректировать день месяца до последнего допустимого дня
Например, добавление одного года к дате 2008-02-29 (високосный год) дало бы недопустимую дату 2009-02-29 (обычный год). Вместо возврата недопустимого результата выбирается последний допустимый день месяца — 2009-02-28.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
yearsToAdd— количество лет для добавления; может быть отрицательным - Возвращает:
LocalDateна основе этой даты с добавленным количеством лет; не null- Выбрасывает:
-
DateTimeException— если результат выходит за поддерживаемый диапазон дат
plusMonths
public LocalDate plusMonths(long monthsToAdd)
LocalDate с добавленным указанным количеством месяцев. Этот метод добавляет указанную величину к полю месяца в три этапа:
- Добавить введенное количество месяцев к полю месяца года
- Проверить, не будет ли результирующая дата недопустимой
- При необходимости скорректировать день месяца до последнего допустимого дня
Например, добавление одного месяца к дате 2007-03-31 дало бы недопустимую дату 2007-04-31. Вместо возврата недопустимого результата выбирается последний допустимый день месяца — 2007-04-30.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
monthsToAdd— количество месяцев для добавления; может быть отрицательным - Возвращает:
LocalDateна основе этой даты с добавленным количеством месяцев; не null- Выбрасывает:
-
DateTimeException— если результат выходит за поддерживаемый диапазон дат
plusWeeks
public LocalDate plusWeeks(long weeksToAdd)
LocalDate с добавленным указанным количеством недель. Этот метод добавляет указанную величину в неделях к полю дней, при необходимости увеличивая поля месяца и года, чтобы результат оставался допустимым. Результат становится недопустимым только при превышении максимального или минимального значения года.
Например, добавление одной недели к дате 2008-12-31 даст 2009-01-07.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
weeksToAdd— количество недель для добавления; может быть отрицательным - Возвращает:
LocalDateна основе этой даты с добавленным количеством недель; не null- Выбрасывает:
-
DateTimeException— если результат выходит за поддерживаемый диапазон дат
plusDays
public LocalDate plusDays(long daysToAdd)
LocalDate с добавленным указанным количеством дней. Этот метод добавляет указанную величину к полю дней, при необходимости увеличивая поля месяца и года, чтобы результат оставался допустимым. Результат становится недопустимым только при превышении максимального или минимального значения года.
Например, добавление одного дня к дате 2008-12-31 даст 2009-01-01.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
daysToAdd— количество дней для добавления; может быть отрицательным - Возвращает:
LocalDateна основе этой даты с добавленным количеством дней; не null- Выбрасывает:
-
DateTimeException— если результат выходит за поддерживаемый диапазон дат
minus
public LocalDate minus(TemporalAmount amountToSubtract)
Возвращает LocalDate на основе этой даты с вычтенной указанной величиной. Обычно величина представляет собой Period, но может иметь и другой тип, реализующий интерфейс TemporalAmount.
Вычисление делегируется объекту величины путем вызова TemporalAmount.subtractFrom(Temporal). Реализация величины может выполнять вычитание любым способом, однако обычно она вызывает minus(long, TemporalUnit). Чтобы определить, можно ли успешно вычесть величину, обратитесь к документации ее реализации.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Указано в:
-
minusв интерфейсеChronoLocalDate - Указано в:
-
minusв интерфейсеTemporal - Параметры:
-
amountToSubtract— величина, которую нужно вычесть; не null - Возвращает:
LocalDateна основе этой даты с выполненным вычитанием; не null- Выбрасывает:
-
DateTimeException— если вычитание невозможно выполнить -
ArithmeticException— при переполнении числового значения
minus
public LocalDate minus(long amountToSubtract, TemporalUnit unit)
Возвращает LocalDate на основе этой даты с вычтенной величиной в единицах указанной единицы измерения. Если вычесть величину невозможно, поскольку единица измерения не поддерживается или по какой-либо другой причине, выбрасывается исключение.
Этот метод эквивалентен plus(long, TemporalUnit) с величиной, взятой с противоположным знаком. Полное описание того, как работает сложение и, следовательно, вычитание, см. в документации этого метода.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Указано в:
-
minusв интерфейсеChronoLocalDate - Указано в:
-
minusв интерфейсеTemporal - Параметры:
-
amountToSubtract— количество единиц измерения, вычитаемых из результата; может быть отрицательным -
unit— единица измерения величины, которую нужно вычесть; не null - Возвращает:
LocalDateна основе этой даты с вычтенной указанной величиной; не null- Выбрасывает:
-
DateTimeException— если вычитание невозможно выполнить -
UnsupportedTemporalTypeException— если единица измерения не поддерживается -
ArithmeticException— при переполнении числового значения
minusYears
public LocalDate minusYears(long yearsToSubtract)
LocalDate с вычтенным указанным количеством лет. Этот метод вычитает указанную величину из поля года в три этапа:
- Вычесть введенное количество лет из поля года
- Проверить, не будет ли результирующая дата недопустимой
- При необходимости скорректировать день месяца до последнего допустимого дня
Например, вычитание одного года из даты 2008-02-29 (високосный год) дало бы недопустимую дату 2007-02-29 (обычный год). Вместо возврата недопустимого результата выбирается последний допустимый день месяца — 2007-02-28.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
yearsToSubtract— количество лет для вычитания; может быть отрицательным - Возвращает:
LocalDateна основе этой даты с вычтенным количеством лет; не null- Выбрасывает:
-
DateTimeException— если результат выходит за поддерживаемый диапазон дат
minusMonths
public LocalDate minusMonths(long monthsToSubtract)
LocalDate с вычтенным указанным количеством месяцев. Этот метод вычитает указанную величину из поля месяца в три этапа:
- Вычесть введенное количество месяцев из поля месяца года
- Проверить, не будет ли результирующая дата недопустимой
- При необходимости скорректировать день месяца до последнего допустимого дня
Например, вычитание одного месяца из даты 2007-03-31 дало бы недопустимую дату 2007-02-31. Вместо возврата недопустимого результата выбирается последний допустимый день месяца — 2007-02-28.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
monthsToSubtract— количество месяцев для вычитания; может быть отрицательным - Возвращает:
LocalDateна основе этой даты с вычтенным количеством месяцев; не null- Выбрасывает:
-
DateTimeException— если результат выходит за поддерживаемый диапазон дат
minusWeeks
public LocalDate minusWeeks(long weeksToSubtract)
LocalDate с вычтенным указанным количеством недель. Этот метод вычитает указанную величину в неделях из поля дней, при необходимости уменьшая поля месяца и года, чтобы результат оставался допустимым. Результат становится недопустимым только при превышении максимального или минимального значения года.
Например, вычитание одной недели из даты 2009-01-07 даст 2008-12-31.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
weeksToSubtract— количество недель для вычитания; может быть отрицательным - Возвращает:
LocalDateна основе этой даты с вычтенным количеством недель; не null- Выбрасывает:
-
DateTimeException— если результат выходит за поддерживаемый диапазон дат
minusDays
public LocalDate minusDays(long daysToSubtract)
LocalDate с вычтенным указанным количеством дней. Этот метод вычитает указанную величину из поля дней, при необходимости уменьшая поля месяца и года, чтобы результат оставался допустимым. Результат становится недопустимым только при превышении максимального или минимального значения года.
Например, вычитание одного дня из даты 2009-01-01 даст 2008-12-31.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
daysToSubtract— количество дней для вычитания; может быть отрицательным - Возвращает:
LocalDateна основе этой даты с вычтенным количеством дней; не null- Выбрасывает:
-
DateTimeException— если результат выходит за поддерживаемый диапазон дат
query
public <R> R query(TemporalQuery<R> query)
Этот метод выполняет запрос к этой дате с помощью указанного объекта стратегии запроса. Объект TemporalQuery определяет логику получения результата. Чтобы понять, каким будет результат этого метода, ознакомьтесь с документацией запроса.
Результат этого метода получается путем вызова метода TemporalQuery.queryFrom(TemporalAccessor) для указанного запроса с передачей this в качестве аргумента.
- Указано в:
-
queryв интерфейсеChronoLocalDate - Указано в:
-
queryв интерфейсеTemporalAccessor - Параметры типа:
R— тип результата- Параметры:
-
query— запрос для выполнения; не null - Возвращает:
- результат запроса; может быть null (определяется запросом)
- Выбрасывает:
-
DateTimeException— если невозможно выполнить запрос (определяется запросом) -
ArithmeticException— при переполнении числового значения (определяется запросом)
adjustInto
public Temporal adjustInto(Temporal temporal)
Возвращает временной объект того же наблюдаемого типа, что и входной, но с датой, измененной на дату этого объекта.
Корректировка эквивалентна использованию Temporal.with(TemporalField, long) с передачей ChronoField.EPOCH_DAY в качестве поля.
В большинстве случаев понятнее изменить порядок вызовов, используя Temporal.with(TemporalAdjuster):
// these two lines are equivalent, but the second approach is recommended temporal = thisLocalDate.adjustInto(temporal); temporal = temporal.with(thisLocalDate);
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Указано в:
-
adjustIntoв интерфейсеChronoLocalDate - Указано в:
-
adjustIntoв интерфейсеTemporalAdjuster - Параметры:
-
temporal— целевой объект для корректировки; не null - Возвращает:
- скорректированный объект; не null
- Выбрасывает:
-
DateTimeException— если выполнить корректировку невозможно -
ArithmeticException— при переполнении числового значения
until
public long until(Temporal endExclusive, TemporalUnit unit)
Этот метод вычисляет время между двумя объектами LocalDate в единицах одной TemporalUnit. Начальной и конечной точками являются this и указанная дата. Результат будет отрицательным, если конечная дата предшествует начальной. Переданный этому методу объект Temporal преобразуется в LocalDate с помощью from(TemporalAccessor). Например, количество дней между двумя датами можно вычислить с помощью startDate.until(endDate, DAYS).
Вычисление возвращает целое число, представляющее количество полных единиц между двумя датами. Например, промежуток в месяцах между 2012-06-15 и 2012-08-14 составляет только один месяц, поскольку до двух месяцев не хватает одного дня.
Этот метод можно использовать двумя эквивалентными способами. Первый — вызвать этот метод. Второй — использовать TemporalUnit.between(Temporal, Temporal):
// these two lines are equivalent amount = start.until(end, MONTHS); amount = MONTHS.between(start, end);Выбор следует сделать исходя из того, какой вариант делает код более читаемым.
Вычисление реализовано в этом методе для ChronoUnit. Поддерживаются единицы DAYS, WEEKS, MONTHS, YEARS, DECADES, CENTURIES, MILLENNIA и ERAS. Другие значения ChronoUnit приведут к выбросу исключения.
Если единица не является ChronoUnit, результат этого метода получается вызовом TemporalUnit.between(Temporal, Temporal) с передачей this в качестве первого аргумента, а преобразованного входного временного объекта — в качестве второго.
Этот экземпляр неизменяем и не изменяется в результате вызова данного метода.
- Определено в:
-
untilв интерфейсеChronoLocalDate - Определено в:
-
untilв интерфейсеTemporal - Параметры:
-
endExclusive- конечная дата, не включается в результат; преобразуется вLocalDate, не null -
unit- единица измерения времени, не null - Возвращает:
- время между этой датой и конечной датой
- Вызывает:
-
DateTimeException- если невозможно вычислить промежуток или конечный временной объект нельзя преобразовать вLocalDate -
UnsupportedTemporalTypeException- если единица не поддерживается -
ArithmeticException- при переполнении числового значения
until
public Period until(ChronoLocalDate endDateExclusive)
Period. Этот метод вычисляет период между двумя датами в годах, месяцах и днях. Начальной и конечной точками являются this и указанная дата. Результат будет отрицательным, если конечная дата предшествует начальной. Знак будет одинаковым для лет, месяцев и дней.
Вычисление выполняется с использованием календарной системы ISO. При необходимости входная дата преобразуется в формат ISO.
Начальная дата включается, а конечная — нет. Период вычисляется путем вычитания полных месяцев, затем вычисляется оставшееся количество дней с корректировкой, обеспечивающей одинаковый знак для обоих значений. После этого количество месяцев нормализуется в годы и месяцы исходя из того, что год состоит из 12 месяцев. Месяц считается полным, если день месяца конечной даты больше или равен дню месяца начальной даты. Например, промежуток от 2010-01-15 до 2011-03-18 составляет «1 год, 2 месяца и 3 дня».
Этот метод можно использовать двумя эквивалентными способами. Первый — вызвать этот метод. Второй — использовать Period.between(LocalDate, LocalDate):
// these two lines are equivalent period = start.until(end); period = Period.between(start, end);Выбор следует сделать исходя из того, какой вариант делает код более читаемым.
- Определено в:
-
untilв интерфейсеChronoLocalDate - Параметры:
-
endDateExclusive- конечная дата, не включается в результат; может относиться к любой хронологии, не null - Возвращает:
- период между этой датой и конечной датой, не null
datesUntil
public Stream<LocalDate> datesUntil(LocalDate endExclusive)
endExclusive (не включительно), увеличиваясь на 1 день. Этот метод эквивалентен datesUntil(endExclusive, Period.ofDays(1)).
- Параметры:
-
endExclusive- конечная дата, не включается в результат, не null - Возвращает:
- последовательный
Streamдля диапазона значенийLocalDate - Вызывает:
-
IllegalArgumentException- если конечная дата предшествует этой дате - Начиная с версии:
- 9
datesUntil
public Stream<LocalDate> datesUntil(LocalDate endExclusive, Period step)
endExclusive (не включительно). n-я дата в потоке равна this.plus(step.multipliedBy(n)) (однако результат умножения шага никогда не вызывает переполнения). Например, если эта дата — 2015-01-31, конечная дата — 2015-05-01, а шаг равен 1 месяцу, поток содержит 2015-01-31, 2015-02-28, 2015-03-31 и 2015-04-30.
- Параметры:
-
endExclusive- конечная дата, не включается в результат, не null -
step- ненулевой неотрицательныйPeriod, задающий шаг. - Возвращает:
- последовательный
Streamдля диапазона значенийLocalDate - Вызывает:
-
IllegalArgumentException- если шаг равен нулю, илиstep.getDays()иstep.toTotalMonths()имеют противоположные знаки, или конечная дата предшествует этой дате при положительном шаге, или конечная дата следует за этой датой при отрицательном шаге - Начиная с версии:
- 9
format
public String format(DateTimeFormatter formatter)
Эта дата передается форматтеру для создания строки.
- Определено в:
-
formatв интерфейсеChronoLocalDate - Параметры:
-
formatter- используемый форматтер, не null - Возвращает:
- отформатированную строку с датой, не null
- Вызывает:
-
DateTimeException- если при форматировании произошла ошибка
atTime
public LocalDateTime atTime(LocalTime time)
LocalDateTime. Возвращает LocalDateTime, образованный этой датой и указанным временем. Допустимы все возможные сочетания даты и времени.
- Определено в:
-
atTimeв интерфейсеChronoLocalDate - Параметры:
-
time- объединяемое время, не null - Возвращает:
- локальные дата и время, образованные этой датой и указанным временем, не null
atTime
public LocalDateTime atTime(int hour, int minute)
LocalDateTime. Возвращает LocalDateTime, образованный этой датой и указанными часом и минутой. Значения секунд и наносекунд устанавливаются в ноль. Каждое отдельное поле времени должно находиться в допустимом диапазоне. Допустимы все возможные сочетания даты и времени.
- Параметры:
-
hour- час дня, от 0 до 23 -
minute- минута часа, от 0 до 59 - Возвращает:
- локальные дата и время, образованные этой датой и указанным временем, не null
- Вызывает:
-
DateTimeException- если значение какого-либо поля выходит за допустимый диапазон
atTime
public LocalDateTime atTime(int hour, int minute, int second)
LocalDateTime. Возвращает LocalDateTime, образованный этой датой и указанными часом, минутой и секундой. Значение наносекунд устанавливается в ноль. Каждое отдельное поле времени должно находиться в допустимом диапазоне. Допустимы все возможные сочетания даты и времени.
- Параметры:
-
hour- час дня, от 0 до 23 -
minute- минута часа, от 0 до 59 -
second- секунда минуты, от 0 до 59 - Возвращает:
- локальные дата и время, образованные этой датой и указанным временем, не null
- Вызывает:
-
DateTimeException- если значение какого-либо поля выходит за допустимый диапазон
atTime
public LocalDateTime atTime(int hour, int minute, int second, int nanoOfSecond)
LocalDateTime. Возвращает LocalDateTime, образованный этой датой и указанными часом, минутой, секундой и наносекундой. Каждое отдельное поле времени должно находиться в допустимом диапазоне. Допустимы все возможные сочетания даты и времени.
- Параметры:
-
hour- час дня, от 0 до 23 -
minute- минута часа, от 0 до 59 -
second- секунда минуты, от 0 до 59 -
nanoOfSecond- наносекунда, от 0 до 999,999,999 - Возвращает:
- локальные дата и время, образованные этой датой и указанным временем, не null
- Вызывает:
-
DateTimeException- если значение какого-либо поля выходит за допустимый диапазон
atTime
public OffsetDateTime atTime(OffsetTime time)
OffsetDateTime. Возвращает OffsetDateTime, образованный этой датой и указанным временем. Допустимы все возможные сочетания даты и времени.
- Параметры:
-
time- объединяемое время, не null - Возвращает:
- дата и время со смещением, образованные этой датой и указанным временем, не null
atStartOfDay
public LocalDateTime atStartOfDay()
LocalDateTime в начале этой даты. Возвращает LocalDateTime, образованный этой датой и временем полуночи — 00:00 — в начале этой даты.
- Возвращает:
- локальные дату и время полуночи в начале этой даты, не null
atStartOfDay
public ZonedDateTime atStartOfDay(ZoneId zone)
Правила часового пояса, например переход на летнее время, означают, что не всякие локальные дата и время допустимы для указанного часового пояса, поэтому локальное время может отличаться от полуночи.
В большинстве случаев для локальных даты и времени существует только одно допустимое смещение. При переходе часов назад существуют два допустимых смещения, и используется более раннее, соответствующее первому наступлению полуночи в эту дату. При пропуске времени дата и время с часовым поясом будут соответствовать моменту сразу после пропуска.
Если идентификатор часового пояса — это ZoneOffset, результат всегда будет содержать время полуночи.
Чтобы преобразовать дату и время в конкретное время в заданном часовом поясе, вызовите atTime(LocalTime), а затем LocalDateTime.atZone(ZoneId).
- Параметры:
-
zone- используемый идентификатор часового пояса, не null - Возвращает:
- дата и время с часовым поясом, образованные этой датой и самым ранним допустимым временем для часового пояса, не null
toEpochSecond
public long toEpochSecond(LocalTime time, ZoneOffset offset)
LocalDate в количество секунд, прошедших с начала эпохи 1970-01-01T00:00:00Z. Этот метод объединяет эту локальную дату с указанным временем и смещением для вычисления значения секунд эпохи — количества секунд, прошедших с 1970-01-01T00:00:00Z. Моменты на временной шкале после начала эпохи имеют положительное значение, а более ранние — отрицательное.
- Параметры:
-
time- локальное время, не null -
offset- смещение часового пояса, не null - Возвращает:
- количество секунд, прошедших с начала эпохи 1970-01-01T00:00:00Z; может быть отрицательным
- Начиная с версии:
- 9
compareTo
public int compareTo(ChronoLocalDate other)
Сравнение выполняется прежде всего по дате, от самой ранней к самой поздней. Оно «согласовано с equals» в соответствии с определением Comparable.
Если все сравниваемые даты являются экземплярами LocalDate, сравнение будет полностью основано на дате. Если некоторые сравниваемые даты принадлежат к разным хронологиям, учитывается также хронология; см. ChronoLocalDate.compareTo(ChronoLocalDate).
- Определено в:
-
compareToв интерфейсеChronoLocalDate - Определено в:
-
compareToв интерфейсеComparable<ChronoLocalDate> - Параметры:
-
other- другая дата для сравнения, не null - Возвращает:
- значение сравнения: сначала результат сравнения этой локальной даты с
otherлокальной датой, затем этой хронологии сotherхронологией; возвращается первый ненулевой результат, а если таких нет — ноль - См. также:
isAfter
public boolean isAfter(ChronoLocalDate other)
Проверяет, представляет ли эта дата момент на локальной временной шкале, следующий за другой датой.
LocalDate a = LocalDate.of(2012, 6, 30); LocalDate b = LocalDate.of(2012, 7, 1); a.isAfter(b) == false a.isAfter(a) == false b.isAfter(a) == true
Этот метод учитывает только положение двух дат на локальной временной шкале. Он не учитывает хронологию или календарную систему. Это отличается от сравнения в compareTo(ChronoLocalDate), но соответствует подходу метода ChronoLocalDate.timeLineOrder().
- Определено в:
-
isAfterв интерфейсеChronoLocalDate - Параметры:
-
other- другая дата для сравнения, не null - Возвращает:
- true, если эта дата следует за указанной датой
isBefore
public boolean isBefore(ChronoLocalDate other)
Проверяет, представляет ли эта дата момент на локальной временной шкале, предшествующий другой дате.
LocalDate a = LocalDate.of(2012, 6, 30); LocalDate b = LocalDate.of(2012, 7, 1); a.isBefore(b) == true a.isBefore(a) == false b.isBefore(a) == false
Этот метод учитывает только положение двух дат на локальной временной шкале. Он не учитывает хронологию или календарную систему. Это отличается от сравнения в compareTo(ChronoLocalDate), но соответствует подходу метода ChronoLocalDate.timeLineOrder().
- Определено в:
-
isBeforeв интерфейсеChronoLocalDate - Параметры:
-
other- другая дата для сравнения, не null - Возвращает:
- true, если эта дата предшествует указанной дате
isEqual
public boolean isEqual(ChronoLocalDate other)
Проверяет, представляет ли эта дата тот же момент на локальной временной шкале, что и другая дата.
LocalDate a = LocalDate.of(2012, 6, 30); LocalDate b = LocalDate.of(2012, 7, 1); a.isEqual(b) == false a.isEqual(a) == true b.isEqual(a) == false
Этот метод учитывает только положение двух дат на локальной временной шкале. Он не учитывает хронологию или календарную систему. Это отличается от сравнения в compareTo(ChronoLocalDate), но соответствует подходу метода ChronoLocalDate.timeLineOrder().
- Определено в:
-
isEqualв интерфейсеChronoLocalDate - Параметры:
-
other- другая дата для сравнения, не null - Возвращает:
- true, если эта дата равна указанной дате
equals
public boolean equals(Object obj)
Сравнивает этот объект LocalDate с другим, проверяя совпадение дат.
Сравниваются только объекты типа LocalDate; для объектов других типов возвращается false. Чтобы сравнить даты двух экземпляров TemporalAccessor, в том числе даты из разных хронологий, используйте ChronoField.EPOCH_DAY в качестве компаратора.
- Определено в:
-
equalsв интерфейсеChronoLocalDate - Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- проверяемый объект; для null возвращается false - Возвращает:
- true, если эта дата равна другой дате
- См. также:
hashCode
public int hashCode()
- Определено в:
-
hashCodeв интерфейсеChronoLocalDate - Переопределяет:
-
hashCodeв классеObject - Возвращает:
- подходящий хеш-код
- См. также:
toString
public String toString()
String, например 2007-12-03. Результат будет представлен в формате ISO-8601 uuuu-MM-dd.
- Определено в:
-
toStringв интерфейсеChronoLocalDate - Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление этой даты, не 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/LocalDate.html