Интерфейс 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, неизменяемыми и потокобезопасными. По возможности подклассы должны быть сериализуемыми.
- Начиная с версии:
- 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 |
Возвращает объект того же типа, что и этот объект, с изменённым указанным полем. |
Методы, объявленные в интерфейсе Temporal
until | Модификатор и тип | Метод | Описание |
|---|---|---|
long |
until |
Вычисляет промежуток времени до другого объекта времени в единицах указанной единицы измерения. |
Методы, объявленные в интерфейсе TemporalAccessor
get, getLong, range | Модификатор и тип | Метод | Описание |
|---|---|---|
default int |
get |
Возвращает значение указанного поля в виде int. |
long |
getLong |
Возвращает значение указанного поля в виде long. |
default ValueRange |
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— если поле невозможно установить -
UnsupportedTemporalTypeException— если поле не поддерживается -
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— если единицу измерения невозможно прибавить -
UnsupportedTemporalTypeException— если единица измерения не поддерживается -
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— если единицу измерения невозможно вычесть -
UnsupportedTemporalTypeException— если единица измерения не поддерживается -
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.