Интерфейс ChronoLocalDateTime<D extends ChronoLocalDate>
- Параметры типа:
D- конкретный тип даты этой даты и времени
- Все суперинтерфейсы:
Comparable<ChronoLocalDateTime<?>>, Temporal, TemporalAccessor, TemporalAdjuster
- Все известные реализующие классы:
LocalDateTime
public interface ChronoLocalDateTime<D extends ChronoLocalDate> extends Temporal, TemporalAdjuster, Comparable<ChronoLocalDateTime<?>>
В большинстве приложений сигнатуры методов, поля и переменные следует объявлять как LocalDateTime, а не как этот интерфейс.
ChronoLocalDateTime — это абстрактное представление локальных даты и времени, в котором Chronology chronology, или календарная система, может быть подключаемой. Дата и время определяются через поля, представленные интерфейсом TemporalField; большинство распространённых реализаций определено в ChronoField. Хронология определяет работу календарной системы и значение стандартных полей.
Когда использовать этот интерфейс
Разработка API поощряет использованиеLocalDateTime вместо этого интерфейса, даже если приложению необходимо работать с несколькими календарными системами. Обоснование этого подробно рассматривается в ChronoLocalDate. Перед использованием этого интерфейса убедитесь, что вы прочитали и поняли обсуждение в ChronoLocalDate.
- Требования к реализации:
- Этот интерфейс необходимо реализовывать с осторожностью, чтобы другие классы работали корректно. Все реализации, экземпляры которых можно создавать, должны быть final, неизменяемыми и потокобезопасными. По возможности подклассы должны реализовывать Serializable.
- С версии:
- 1.8
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
default Temporal |
adjustInto |
Изменяет указанный временной объект так, чтобы его дата и время совпадали с датой и временем этого объекта. |
ChronoZonedDateTime |
atZone |
Объединяет это время с часовым поясом для создания ChronoZonedDateTime. |
default int |
compareTo |
Сравнивает эту дату и время с другими датой и временем, включая хронологию. |
boolean |
equals |
Проверяет, равны ли эти дата и время другим дате и времени, включая хронологию. |
default String |
format |
Форматирует эти дату и время с помощью указанного форматтера. |
static ChronoLocalDateTime |
from |
Получает экземпляр ChronoLocalDateTime из временного объекта. |
default Chronology |
getChronology() |
Получает хронологию этих даты и времени. |
int |
hashCode() |
Хеш-код этих даты и времени. |
default boolean |
isAfter |
Проверяет, находятся ли эти дата и время после указанных даты и времени, не учитывая хронологию. |
default boolean |
isBefore |
Проверяет, находятся ли эти дата и время до указанных даты и времени, не учитывая хронологию. |
default boolean |
isEqual |
Проверяет, равны ли эти дата и время указанным дате и времени, не учитывая хронологию. |
boolean |
isSupported |
Проверяет, поддерживается ли указанное поле. |
default boolean |
isSupported |
Проверяет, поддерживается ли указанная единица измерения. |
default ChronoLocalDateTime |
minus |
Возвращает объект того же типа, что и этот объект, с вычтенным указанным периодом. |
default ChronoLocalDateTime |
minus |
Возвращает объект того же типа, что и этот объект, с вычтенным значением. |
ChronoLocalDateTime |
plus |
Возвращает объект того же типа, что и этот объект, с добавленным указанным периодом. |
default ChronoLocalDateTime |
plus |
Возвращает объект того же типа, что и этот объект, с добавленным значением. |
default <R> R |
query |
Выполняет запрос к этим дате и времени с помощью указанного запроса. |
static Comparator |
timeLineOrder() |
Получает компаратор, который сравнивает ChronoLocalDateTime в хронологическом порядке, не учитывая хронологию. |
default long |
toEpochSecond |
Преобразует эти дату и время в количество секунд, прошедших с начала эпохи 1970-01-01T00:00:00Z. |
default Instant |
toInstant |
Преобразует эти дату и время в Instant. |
D |
toLocalDate() |
Получает часть этих даты и времени, содержащую локальную дату. |
LocalTime |
toLocalTime() |
Получает часть этих даты и времени, содержащую локальное время. |
String |
toString() |
Выводит эти дату и время в виде String. |
default ChronoLocalDateTime |
with |
Возвращает скорректированный объект того же типа, что и этот объект, с применённой корректировкой. |
ChronoLocalDateTime |
with |
Возвращает объект того же типа, что и этот объект, с изменённым указанным полем. |
Методы, объявленные в интерфейсе TemporalAccessor
get, getLong, range
Подробное описание методов
timeLineOrder
static Comparator<ChronoLocalDateTime<?>> timeLineOrder()
ChronoLocalDateTime в порядке временной шкалы, игнорируя хронологию. Этот компаратор отличается от сравнения в compareTo(ChronoLocalDateTime) тем, что сравнивает только базовые дату и время, но не хронологию. Это позволяет сравнивать даты в разных календарных системах на основе положения даты и времени на локальной временной шкале. Базовое сравнение эквивалентно сравнению номера дня от эпохи и количества наносекунд в течение дня.
- Возвращает:
- компаратор, который сравнивает в порядке временной шкалы, игнорируя хронологию
- См. также:
from
static ChronoLocalDateTime<?> from(TemporalAccessor temporal)
ChronoLocalDateTime из объекта, представляющего временные данные. Создает локальные дату и время на основе указанного объекта, представляющего временные данные. TemporalAccessor представляет произвольный набор сведений о дате и времени, который эта фабрика преобразует в экземпляр ChronoLocalDateTime.
Преобразование извлекает из объекта, представляющего временные данные, хронологию и дату со временем и объединяет их. Поведение эквивалентно использованию Chronology.localDateTime(TemporalAccessor) с извлеченной хронологией. Реализациям разрешается выполнять оптимизацию, например обращаться к полям, эквивалентным соответствующим объектам.
Сигнатура этого метода соответствует сигнатуре функционального интерфейса TemporalQuery, что позволяет использовать его как запрос посредством ссылки на метод: ChronoLocalDateTime::from.
- Параметры:
-
temporal— объект, представляющий временные данные, который нужно преобразовать; не null - Возвращает:
- дату и время; не null
- Вызывает:
-
DateTimeException— если преобразование вChronoLocalDateTimeневозможно - См. также:
getChronology
default Chronology getChronology()
Chronology представляет используемую календарную систему. Эра и другие поля в ChronoField определяются хронологией.
- Возвращает:
- хронологию; не null
toLocalDate
D toLocalDate()
Возвращает локальную дату с теми же годом, месяцем и днем, что и у этих даты и времени.
- Возвращает:
- часть с датой этих даты и времени; не null
toLocalTime
LocalTime toLocalTime()
Возвращает локальное время с теми же часом, минутой, секундой и наносекундой, что и у этих даты и времени.
- Возвращает:
- часть со временем этих даты и времени; не null
isSupported
boolean isSupported(TemporalField field)
Проверяет, можно ли запросить указанное поле у этих даты и времени. Если результат равен false, вызовы методов range, get и with(TemporalField, long) приведут к выбросу исключения.
Набор поддерживаемых полей определяется хронологией и обычно включает все ChronoField поля даты и времени.
Если поле не является ChronoField, результат этого метода определяется вызовом TemporalField.isSupportedBy(TemporalAccessor) с передачей this в качестве аргумента. Поддержка поля определяется самим полем.
- Определено в:
-
isSupportedв интерфейсеTemporalAccessor - Параметры:
-
field— поле для проверки; null возвращает false - Возвращает:
- true, если поле можно запросить; в противном случае false
isSupported
default boolean isSupported(TemporalUnit unit)
Проверяет, можно ли прибавить указанную единицу измерения к этим дате и времени или вычесть ее из них. Если результат равен false, вызовы методов plus(long, TemporalUnit) и minus приведут к выбросу исключения.
Набор поддерживаемых единиц измерения определяется хронологией и обычно включает все ChronoUnit единицы, кроме FOREVER.
Если единица измерения не является ChronoUnit, результат этого метода определяется вызовом TemporalUnit.isSupportedBy(Temporal) с передачей this в качестве аргумента. Поддержка единицы измерения определяется самой единицей.
- Определено в:
-
isSupportedв интерфейсеTemporal - Параметры:
-
unit— единица измерения для проверки; null возвращает false - Возвращает:
- true, если единицу измерения можно прибавить или вычесть; в противном случае false
with
default ChronoLocalDateTime<D> with(TemporalAdjuster adjuster)
Корректирует эти дату и время согласно правилам указанного средства корректировки. Простое средство корректировки может просто установить одно из полей, например поле года. Более сложное средство корректировки может установить дату на последний день месяца. Набор распространенных корректировок приведен в TemporalAdjusters. Среди них — поиск «последнего дня месяца» и «следующей среды». Средство корректировки отвечает за обработку особых случаев, таких как различная продолжительность месяцев и високосные годы.
Ниже приведен пример кода, показывающий, как и зачем используется этот метод:
date = date.with(Month.JULY); // most key classes implement TemporalAdjuster date = date.with(lastDayOfMonth()); // static import from Adjusters date = date.with(next(WEDNESDAY)); // static import from Adjusters and DayOfWeek
- Определено в:
-
withв интерфейсеTemporal - Параметры:
-
adjuster— используемое средство корректировки; не null - Возвращает:
- объект того же типа с примененной указанной корректировкой; не null
- Вызывает:
-
DateTimeException— если применить корректировку невозможно -
ArithmeticException— при переполнении числового значения
with
ChronoLocalDateTime<D> with(TemporalField field, long newValue)
Возвращает новый объект, созданный на основе этого, в котором изменено значение указанного поля. Например, для LocalDate этот метод можно использовать для установки года, месяца или дня месяца. Возвращенный объект будет иметь тот же наблюдаемый тип, что и этот объект.
В некоторых случаях изменение поля не определено однозначно. Например, если целевой объект — дата, соответствующая 31 января, то неясно, как изменить месяц на февраль. В подобных случаях поле отвечает за определение результата. Обычно выбирается предыдущая допустимая дата, то есть в этом примере последний допустимый день февраля.
- Определено в:
-
withв интерфейсеTemporal - Параметры:
-
field— поле, которое нужно установить в результате; не null -
newValue— новое значение поля в результате - Возвращает:
- объект того же типа с установленным указанным полем; не null
- Вызывает:
-
DateTimeException— если поле нельзя установить -
ArithmeticException— при переполнении числового значения
plus
default ChronoLocalDateTime<D> plus(TemporalAmount amount)
Корректирует эти временные данные, выполняя сложение согласно правилам указанной величины. Обычно величина представляет собой Period, но также может быть любым другим типом, реализующим интерфейс TemporalAmount, например Duration.
Ниже приведен пример кода, показывающий, как и зачем используется этот метод:
date = date.plus(period); // add a Period instance date = date.plus(duration); // add a Duration instance date = date.plus(workingDays(6)); // example user-written workingDays method
Обратите внимание: вызов plus, за которым следует вызов minus, не гарантирует возврата тех же даты и времени.
- Определено в:
-
plusв интерфейсеTemporal - Параметры:
-
amount— прибавляемая величина; не null - Возвращает:
- объект того же типа с примененной указанной корректировкой; не null
- Вызывает:
-
DateTimeException— если сложение невозможно -
ArithmeticException— при переполнении числового значения
plus
ChronoLocalDateTime<D> plus(long amountToAdd, TemporalUnit unit)
Этот метод возвращает новый объект, созданный на основе этого, с добавленным указанным периодом. Например, для LocalDate его можно использовать для прибавления нескольких лет, месяцев или дней. Возвращенный объект будет иметь тот же наблюдаемый тип, что и этот объект.
В некоторых случаях изменение поля не определено однозначно. Например, если целевой объект — дата, соответствующая 31 января, то неясно, как прибавить один месяц. В подобных случаях поле отвечает за определение результата. Обычно выбирается предыдущая допустимая дата, то есть в этом примере последний допустимый день февраля.
- Определено в:
-
plusв интерфейсеTemporal - Параметры:
-
amountToAdd— количество единиц указанного типа для прибавления; может быть отрицательным -
unit— единица измерения прибавляемой величины; не null - Возвращает:
- объект того же типа с добавленным указанным периодом; не null
- Вызывает:
-
DateTimeException— если единицу измерения нельзя прибавить -
ArithmeticException— при переполнении числового значения
minus
default ChronoLocalDateTime<D> minus(TemporalAmount amount)
Корректирует эти временные данные, выполняя вычитание согласно правилам указанной величины. Обычно величина представляет собой Period, но также может быть любым другим типом, реализующим интерфейс TemporalAmount, например Duration.
Ниже приведен пример кода, показывающий, как и зачем используется этот метод:
date = date.minus(period); // subtract a Period instance date = date.minus(duration); // subtract a Duration instance date = date.minus(workingDays(6)); // example user-written workingDays method
Обратите внимание: вызов plus, за которым следует вызов minus, не гарантирует возврата тех же даты и времени.
- Определено в:
-
minusв интерфейсеTemporal - Параметры:
-
amount— вычитаемая величина; не null - Возвращает:
- объект того же типа с примененной указанной корректировкой; не null
- Вызывает:
-
DateTimeException— если вычитание невозможно -
ArithmeticException— при переполнении числового значения
minus
default ChronoLocalDateTime<D> minus(long amountToSubtract, TemporalUnit unit)
Этот метод возвращает новый объект, созданный на основе этого, с вычтенным указанным периодом. Например, для LocalDate его можно использовать для вычитания нескольких лет, месяцев или дней. Возвращенный объект будет иметь тот же наблюдаемый тип, что и этот объект.
В некоторых случаях изменение поля не определено однозначно. Например, если целевой объект — дата, соответствующая 31 марта, то неясно, как вычесть один месяц. В подобных случаях поле отвечает за определение результата. Обычно выбирается предыдущая допустимая дата, то есть в этом примере последний допустимый день февраля.
- Определено в:
-
minusв интерфейсеTemporal - Параметры:
-
amountToSubtract— количество единиц указанного типа для вычитания; может быть отрицательным -
unit— единица измерения вычитаемой величины; не null - Возвращает:
- объект того же типа с вычтенным указанным периодом; не null
- Вызывает:
-
DateTimeException— если единицу измерения нельзя вычесть -
ArithmeticException— при переполнении числового значения
query
default <R> R query(TemporalQuery<R> query)
Выполняет запрос к этим дате и времени с помощью указанного объекта стратегии запроса. Объект TemporalQuery определяет логику получения результата. Ознакомьтесь с документацией запроса, чтобы понять, каким будет результат этого метода.
Результат этого метода получается вызовом метода TemporalQuery.queryFrom(TemporalAccessor) для указанного запроса с передачей this в качестве аргумента.
- Определено в:
-
queryв интерфейсеTemporalAccessor - Параметры типа:
R— тип результата- Параметры:
-
query— вызываемый запрос; не null - Возвращает:
- результат запроса; может быть null (определяется запросом)
- Вызывает:
-
DateTimeException— если выполнить запрос невозможно (определяется запросом) -
ArithmeticException— при переполнении числового значения (определяется запросом)
adjustInto
default Temporal adjustInto(Temporal temporal)
Возвращает объект временных данных того же наблюдаемого типа, что и входной объект, с датой и временем, совпадающими с датой и временем этого объекта.
Корректировка эквивалентна двукратному использованию Temporal.with(TemporalField, long) с передачей ChronoField.EPOCH_DAY и ChronoField.NANO_OF_DAY в качестве полей.
В большинстве случаев код становится понятнее, если изменить порядок вызова и использовать Temporal.with(TemporalAdjuster):
// these two lines are equivalent, but the second approach is recommended temporal = thisLocalDateTime.adjustInto(temporal); temporal = temporal.with(thisLocalDateTime);
Этот экземпляр является неизменяемым, и вызов данного метода на него не влияет.
- Определено в:
-
adjustIntoв интерфейсеTemporalAdjuster - Параметры:
-
temporal— целевой объект для корректировки; не null - Возвращает:
- скорректированный объект; не null
- Вызывает:
-
DateTimeException— если выполнить корректировку невозможно -
ArithmeticException— при переполнении числового значения
format
default String format(DateTimeFormatter formatter)
Эти дата и время передаются форматировщику для создания строки.
Реализация по умолчанию должна вести себя следующим образом:
return formatter.format(this);
- Параметры:
-
formatter— используемый форматировщик; не null - Возвращает:
- строку с отформатированными датой и временем; не null
- Вызывает:
-
DateTimeException— если при форматировании произошла ошибка
atZone
ChronoZonedDateTime<D> atZone(ZoneId zone)
ChronoZonedDateTime. Возвращает ChronoZonedDateTime, сформированные из этих даты и времени в указанном часовом поясе. Результат будет максимально точно соответствовать этим дате и времени. Правила часового пояса, например переход на летнее время, означают, что не всякие локальные дата и время допустимы в указанном часовом поясе, поэтому локальные дата и время могут быть скорректированы.
Локальные дата и время преобразуются в единственный момент на временной шкале. Для этого по правилам часового пояса, заданного идентификатором часового пояса, в rules для локальных даты и времени определяется допустимое смещение относительно UTC/Гринвича.
В большинстве случаев для локальных даты и времени допустимо только одно смещение. При переводе часов назад возникает перекрытие, и допустимы два смещения. Этот метод использует более раннее смещение, обычно соответствующее «летнему» времени.
При разрыве, возникающем из-за перевода часов вперед, допустимого смещения нет. Вместо этого локальные дата и время сдвигаются вперед на длительность разрыва. При обычном переходе на летнее время с разницей в один час локальные дата и время сдвигаются на час вперед, в смещение, обычно соответствующее «летнему» времени.
Чтобы получить более позднее смещение при перекрытии, вызовите ChronoZonedDateTime.withLaterOffsetAtOverlap() для результата этого метода.
- Параметры:
-
zone— используемый часовой пояс; не null - Возвращает:
- часовой пояс и дата со временем, сформированные на основе этих даты и времени; не null
toInstant
default Instant toInstant(ZoneOffset offset)
Instant. Объединяет эти локальные дату и время с указанным смещением, чтобы сформировать Instant.
Реализация по умолчанию выполняет вычисление на основе номера дня от эпохи для даты и номера секунды в течение дня для времени.
- Параметры:
-
offset— смещение, используемое при преобразовании; не null - Возвращает:
Instant, представляющий тот же момент; не null
toEpochSecond
default long toEpochSecond(ZoneOffset offset)
Объединяет эти локальные дату и время с указанным смещением, чтобы вычислить значение секунд от начала эпохи — количество секунд, прошедших с 1970-01-01T00:00:00Z. Моменты на временной шкале после начала эпохи имеют положительные значения, а предшествующие ему — отрицательные.
Реализация по умолчанию выполняет вычисление на основе номера дня от эпохи для даты и номера секунды в течение дня для времени.
- Параметры:
-
offset— смещение, используемое при преобразовании; не null - Возвращает:
- количество секунд, прошедших с начала эпохи 1970-01-01T00:00:00Z
compareTo
default int compareTo(ChronoLocalDateTime<?> other)
Сравнение сначала выполняется по базовым дате и времени на временной шкале, а затем по хронологии. Оно «согласовано с equals» в соответствии с определением в Comparable.
Например, порядок сравнения будет следующим:
2012-12-03T12:00 (ISO)2012-12-04T12:00 (ISO)2555-12-04T12:00 (ThaiBuddhist)2012-12-05T12:00 (ISO)
Если все сравниваемые объекты даты и времени относятся к одной хронологии, дополнительный этап сравнения хронологии не требуется, и используются только локальные дата и время.
Реализация по умолчанию выполняет описанное выше сравнение.
- Определено в:
-
compareToв интерфейсеComparable<D extends ChronoLocalDate> - Параметры:
-
other— другие дата и время для сравнения; не null - Возвращает:
- значение компаратора: сначала результат сравнения этих локальных даты и времени с
otherлокальными датой и временем, затем результат сравнения этой хронологии сotherхронологией; возвращается первый ненулевой результат, а если оба результата равны нулю — ноль - См. также:
isAfter
default boolean isAfter(ChronoLocalDateTime<?> other)
Этот метод отличается от сравнения в compareTo(ChronoLocalDateTime) тем, что сравнивает только базовые дату и время, но не хронологию. Это позволяет сравнивать даты в разных календарных системах на основе положения на временной шкале.
Реализация по умолчанию выполняет сравнение на основе номера дня от эпохи и количества наносекунд в течение дня.
- Параметры:
-
other— другие дата и время для сравнения; не null - Возвращает:
- true, если эти дата и время следуют за указанными датой и временем
isBefore
default boolean isBefore(ChronoLocalDateTime<?> other)
Этот метод отличается от сравнения в compareTo(ChronoLocalDateTime) тем, что сравнивает только базовые дату и время, но не хронологию. Это позволяет сравнивать даты в разных календарных системах на основе положения на временной шкале.
Реализация по умолчанию выполняет сравнение на основе номера дня от эпохи и количества наносекунд в течение дня.
- Параметры:
-
other— другие дата и время для сравнения; не null - Возвращает:
- true, если эти дата и время предшествуют указанным дате и времени
isEqual
default boolean isEqual(ChronoLocalDateTime<?> other)
Этот метод отличается от сравнения в compareTo(ChronoLocalDateTime) тем, что сравнивает только базовые дату и время, но не хронологию. Это позволяет сравнивать даты и время в разных календарных системах на основе положения на временной шкале.
Реализация по умолчанию выполняет сравнение на основе номера дня от эпохи и количества наносекунд в течение дня.
- Параметры:
-
other— другие дата и время для сравнения; не null - Возвращает:
- true, если базовые дата и время совпадают с указанными датой и временем на временной шкале
equals
boolean equals(Object obj)
Сравнивает эти дату и время с другими, проверяя, совпадают ли дата, время и хронология.
hashCode
toString
© 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/chrono/ChronoLocalDateTime.html