Интерфейс ChronoZonedDateTime<D extends ChronoLocalDate>
- Параметры типа:
D- конкретный тип даты этого значения даты и времени
- Все суперинтерфейсы:
Comparable<ChronoZonedDateTime<?>>, Temporal, TemporalAccessor
- Все известные реализующие классы:
ZonedDateTime
public interface ChronoZonedDateTime<D extends ChronoLocalDate> extends Temporal, Comparable<ChronoZonedDateTime<?>>
В большинстве приложений в сигнатурах методов, полях и переменных следует объявлять тип ZonedDateTime, а не этот интерфейс.
ChronoZonedDateTime — это абстрактное представление даты и времени со смещением, в котором Chronology chronology, или календарную систему, можно подключать отдельно. Дата и время определяются в терминах полей, представленных интерфейсом TemporalField, наиболее распространённые реализации которого определены в ChronoField. Хронология определяет работу календарной системы и значение стандартных полей.
Когда использовать этот интерфейс
Проект API поощряет использованиеZonedDateTime вместо этого интерфейса, даже если приложению требуется работать с несколькими календарными системами. Обоснование этого подробно рассматривается в ChronoLocalDate. Перед использованием этого интерфейса убедитесь, что вы прочитали и поняли обсуждение в ChronoLocalDate.
- Требования к реализации:
- Этот интерфейс необходимо реализовывать с осторожностью, чтобы обеспечить корректную работу других классов. Все реализации, экземпляры которых можно создавать, должны быть final, неизменяемыми и потокобезопасными. По возможности подклассы должны поддерживать сериализацию.
- Начиная с версии:
- 1.8
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
default int |
compareTo |
Сравнивает это значение даты и времени с другим, включая хронологию. |
boolean |
equals |
Проверяет, равно ли это значение даты и времени другому. |
default String |
format |
Форматирует это значение даты и времени с помощью указанного форматировщика. |
static ChronoZonedDateTime |
from |
Получает экземпляр ChronoZonedDateTime из объекта временных данных. |
default Chronology |
getChronology() |
Получает хронологию этого значения даты и времени. |
default long |
getLong |
Получает значение указанного поля в виде long. |
ZoneOffset |
getOffset() |
Получает смещение часового пояса, например '+01:00'. |
ZoneId |
getZone() |
Получает идентификатор часового пояса, например 'Europe/Paris'. |
int |
hashCode() |
Хеш-код этого значения даты и времени. |
default boolean |
isAfter |
Проверяет, наступает ли момент времени этого значения даты и времени позже момента времени указанного значения. |
default boolean |
isBefore |
Проверяет, наступает ли момент времени этого значения даты и времени раньше момента времени указанного значения. |
default boolean |
isEqual |
Проверяет, совпадает ли момент времени этого значения даты и времени с моментом времени указанного значения. |
boolean |
isSupported |
Проверяет, поддерживается ли указанное поле. |
default boolean |
isSupported |
Проверяет, поддерживается ли указанная единица измерения. |
default ChronoZonedDateTime |
minus |
Возвращает объект того же типа, что и этот объект, с вычтенным указанным периодом. |
default ChronoZonedDateTime |
minus |
Возвращает объект того же типа, что и этот объект, с вычтенным значением. |
ChronoZonedDateTime |
plus |
Возвращает объект того же типа, что и этот объект, с добавленным указанным периодом. |
default ChronoZonedDateTime |
plus |
Возвращает объект того же типа, что и этот объект, с добавленным значением. |
default <R> R |
query |
Выполняет запрос к этому значению даты и времени с помощью указанного запроса. |
static Comparator |
timeLineOrder() |
Получает компаратор, сравнивающий ChronoZonedDateTime в хронологическом порядке, не учитывая хронологию. |
default long |
toEpochSecond() |
Преобразует это значение даты и времени в количество секунд, прошедших с начала эпохи 1970-01-01T00:00:00Z. |
default Instant |
toInstant() |
Преобразует это значение даты и времени в Instant. |
default D |
toLocalDate() |
Получает локальную дату из этого значения даты и времени. |
ChronoLocalDateTime |
toLocalDateTime() |
Получает локальную дату и время из этого значения даты и времени. |
default LocalTime |
toLocalTime() |
Получает локальное время из этого значения даты и времени. |
String |
toString() |
Выводит это значение даты и времени в виде String. |
default ChronoZonedDateTime |
with |
Возвращает скорректированный объект того же типа, что и этот объект, применяя указанную корректировку. |
ChronoZonedDateTime |
with |
Возвращает объект того же типа, что и этот объект, с изменённым указанным полем. |
ChronoZonedDateTime |
withEarlierOffsetAtOverlap() |
Возвращает копию этого значения даты и времени, заменяя смещение часового пояса на более раннее из двух допустимых смещений при перекрытии на локальной временной шкале. |
ChronoZonedDateTime |
withLaterOffsetAtOverlap() |
Возвращает копию этого значения даты и времени, заменяя смещение часового пояса на более позднее из двух допустимых смещений при перекрытии на локальной временной шкале. |
ChronoZonedDateTime |
withZoneSameInstant |
Возвращает копию этого значения даты и времени с другим часовым поясом, сохраняя момент времени. |
ChronoZonedDateTime |
withZoneSameLocal |
Возвращает копию этого значения даты и времени с другим часовым поясом, по возможности сохраняя локальные дату и время. |
Методы, объявленные в интерфейсе Temporal
until | Модификатор и тип | Метод | Описание |
|---|---|---|
long |
until |
Вычисляет время до другого объекта временных данных в указанной единице измерения. |
Методы, объявленные в интерфейсе TemporalAccessor
get, range | Модификатор и тип | Метод | Описание |
|---|---|---|
default int |
get |
Получает значение указанного поля в виде int. |
default ValueRange |
range |
Получает диапазон допустимых значений указанного поля. |
Подробное описание методов
timeLineOrder
static Comparator<ChronoZonedDateTime<?>> timeLineOrder()
ChronoZonedDateTime в порядке временной шкалы, не учитывая хронологию. Этот компаратор отличается от сравнения в compareTo(ChronoZonedDateTime) тем, что сравнивает только лежащие в основе моменты времени, а не хронологию. Это позволяет сравнивать даты в разных календарных системах на основе положения даты и времени на временной шкале. Сравнение по сути эквивалентно сравнению секунд от эпохи и наносекунд.
- Возвращает:
- компаратор, сравнивающий в порядке временной шкалы без учета хронологии
- См. также:
from
static ChronoZonedDateTime<?> from(TemporalAccessor temporal)
ChronoZonedDateTime из временного объекта. Создает дату и время с часовым поясом на основе указанного временного объекта. TemporalAccessor представляет произвольный набор сведений о дате и времени, который эта фабрика преобразует в экземпляр ChronoZonedDateTime.
Преобразование извлекает из временного объекта хронологию, дату, время и часовой пояс и объединяет их. Поведение эквивалентно использованию Chronology.zonedDateTime(TemporalAccessor) с извлеченной хронологией. Реализациям разрешается выполнять оптимизации, например обращаться к полям, эквивалентным соответствующим объектам.
Сигнатура этого метода соответствует функциональному интерфейсу TemporalQuery, поэтому его можно использовать в качестве запроса посредством ссылки на метод: ChronoZonedDateTime::from.
- Параметры:
-
temporal- временной объект для преобразования, не null - Возвращает:
- дату и время, не null
- Вызывает исключение:
-
DateTimeException- если не удается преобразовать вChronoZonedDateTime - См. также:
getLong
default long getLong(TemporalField field)
TemporalAccessorlong. Этот метод запрашивает у даты и времени значение указанного поля. Возвращаемое значение может выходить за пределы допустимого диапазона значений поля. Если дата и время не могут вернуть значение, поскольку поле не поддерживается или по другой причине, будет выброшено исключение.
- Определен в:
-
getLongв интерфейсеTemporalAccessor - Параметры:
-
field- поле для получения, не null - Возвращает:
- значение поля
toLocalDate
default D toLocalDate()
Возвращает локальную дату с теми же годом, месяцем и днем, что и у этого объекта даты и времени.
- Возвращает:
- часть с датой этого объекта даты и времени, не null
toLocalTime
default LocalTime toLocalTime()
Возвращает локальное время с теми же часом, минутой, секундой и наносекундой, что и у этого объекта даты и времени.
- Возвращает:
- часть со временем этого объекта даты и времени, не null
toLocalDateTime
ChronoLocalDateTime<D> toLocalDateTime()
Возвращает локальную дату с теми же годом, месяцем и днем, что и у этого объекта даты и времени.
- Возвращает:
- локальную часть даты и времени этого объекта, не null
getChronology
default Chronology getChronology()
Chronology представляет используемую календарную систему. Эра и другие поля в ChronoField определяются хронологией.
- Возвращает:
- хронологию, не null
getOffset
ZoneOffset getOffset()
Это смещение локальной даты и времени относительно UTC/Гринвича.
- Возвращает:
- смещение часового пояса, не null
getZone
ZoneId getZone()
Возвращает сохраненный идентификатор часового пояса, используемый для определения правил часового пояса.
- Возвращает:
- идентификатор часового пояса, не null
withEarlierOffsetAtOverlap
ChronoZonedDateTime<D> withEarlierOffsetAtOverlap()
Этот метод действует только при перекрытии локальной временной шкалы, например при осеннем переходе на зимнее время. В такой ситуации для локальной даты и времени допустимы два смещения. Вызов этого метода вернет дату и время с часовым поясом, для которых выбрано более раннее смещение.
Если вызвать этот метод, когда перекрытия нет, будет возвращено this.
Этот экземпляр неизменяем, и вызов данного метода на него не влияет.
- Возвращает:
ChronoZonedDateTimeна основе этой даты и времени с более ранним смещением, не null- Вызывает исключение:
-
DateTimeException- если для часового пояса не удалось найти правила -
DateTimeException- если для этой даты и времени нет действующих правил
withLaterOffsetAtOverlap
ChronoZonedDateTime<D> withLaterOffsetAtOverlap()
Этот метод действует только при перекрытии локальной временной шкалы, например при осеннем переходе на зимнее время. В такой ситуации для локальной даты и времени допустимы два смещения. Вызов этого метода вернет дату и время с часовым поясом, для которых выбрано более позднее смещение.
Если вызвать этот метод, когда перекрытия нет, будет возвращено this.
Этот экземпляр неизменяем, и вызов данного метода на него не влияет.
- Возвращает:
ChronoZonedDateTimeна основе этой даты и времени с более поздним смещением, не null- Вызывает исключение:
-
DateTimeException- если для часового пояса не удалось найти правила -
DateTimeException- если для этой даты и времени нет действующих правил
withZoneSameLocal
ChronoZonedDateTime<D> withZoneSameLocal(ZoneId zone)
Этот метод меняет часовой пояс и сохраняет локальные дату и время. Локальные дата и время меняются только в том случае, если они недопустимы для нового часового пояса.
Чтобы изменить часовой пояс и скорректировать локальные дату и время, используйте withZoneSameInstant(ZoneId).
Этот экземпляр неизменяем, и вызов данного метода на него не влияет.
- Параметры:
-
zone- часовой пояс, на который следует переключиться, не null - Возвращает:
ChronoZonedDateTimeна основе этой даты и времени с запрошенным часовым поясом, не null
withZoneSameInstant
ChronoZonedDateTime<D> withZoneSameInstant(ZoneId zone)
Этот метод меняет часовой пояс и сохраняет момент времени. Обычно это приводит к изменению локальных даты и времени.
Метод основан на сохранении того же момента времени, поэтому разрывы и перекрытия локальной временной шкалы не влияют на результат.
Чтобы изменить смещение, сохранив локальное время, используйте withZoneSameLocal(ZoneId).
- Параметры:
-
zone- часовой пояс, на который следует переключиться, не null - Возвращает:
ChronoZonedDateTimeна основе этой даты и времени с запрошенным часовым поясом, не null- Вызывает исключение:
-
DateTimeException- если результат выходит за пределы поддерживаемого диапазона дат
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 ChronoZonedDateTime<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
ChronoZonedDateTime<D> with(TemporalField field, long newValue)
Возвращает новый объект на основе этого, в котором изменено значение указанного поля. Например, для LocalDate это можно использовать, чтобы задать год, месяц или день месяца. Возвращенный объект будет иметь тот же наблюдаемый тип, что и этот объект.
В некоторых случаях изменение поля определено не полностью. Например, если целевой объект — дата, соответствующая 31 января, то неясно, как изменить месяц на февраль. В таких случаях поле отвечает за определение результата. Обычно выбирается предыдущая допустимая дата, то есть в данном примере последний допустимый день февраля.
- Определен в:
-
withв интерфейсеTemporal - Параметры:
-
field- поле, значение которого нужно задать в результате, не null -
newValue- новое значение поля в результате - Возвращает:
- объект того же типа с заданным значением указанного поля, не null
- Вызывает исключение:
-
DateTimeException- если поле нельзя задать -
UnsupportedTemporalTypeException- если поле не поддерживается -
ArithmeticException- при переполнении числового значения
plus
default ChronoZonedDateTime<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
ChronoZonedDateTime<D> plus(long amountToAdd, TemporalUnit unit)
Этот метод возвращает новый объект на основе этого, к которому прибавлен указанный период. Например, для LocalDate его можно использовать, чтобы прибавить несколько лет, месяцев или дней. Возвращенный объект будет иметь тот же наблюдаемый тип, что и этот объект.
В некоторых случаях изменение поля определено не полностью. Например, если целевой объект — дата, соответствующая 31 января, то неясно, как прибавить один месяц. В таких случаях поле отвечает за определение результата. Обычно выбирается предыдущая допустимая дата, то есть в данном примере последний допустимый день февраля.
- Определен в:
-
plusв интерфейсеTemporal - Параметры:
-
amountToAdd- количество единиц указанного типа для прибавления; может быть отрицательным -
unit- тип прибавляемой единицы измерения, не null - Возвращает:
- объект того же типа с прибавленным указанным периодом, не null
- Вызывает исключение:
-
DateTimeException- если единицу измерения нельзя прибавить -
UnsupportedTemporalTypeException- если единица измерения не поддерживается -
ArithmeticException- при переполнении числового значения
minus
default ChronoZonedDateTime<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 ChronoZonedDateTime<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- при переполнении числового значения (определяется запросом)
format
default String format(DateTimeFormatter formatter)
Эта дата и время будут переданы форматировщику для создания строки.
Реализация по умолчанию должна вести себя следующим образом:
return formatter.format(this);
- Параметры:
-
formatter- используемый форматировщик, не null - Возвращает:
- отформатированную строку даты и времени, не null
- Вызывает исключение:
-
DateTimeException- если при форматировании произошла ошибка
toInstant
default Instant toInstant()
Instant. Возвращает Instant, представляющий ту же точку на временной шкале, что и эта дата и время. Для вычисления объединяются локальные дата и время и смещение.
- Возвращает:
Instant, представляющий тот же момент времени, не null
toEpochSecond
default long toEpochSecond()
Для вычисления количества секунд от начала эпохи 1970-01-01T00:00:00Z используются локальные дата и время и смещение. Моменты времени после начала эпохи положительны, а более ранние — отрицательны.
- Возвращает:
- количество секунд, прошедших с начала эпохи 1970-01-01T00:00:00Z
compareTo
default int compareTo(ChronoZonedDateTime<?> other)
Сначала сравниваются моменты времени, затем локальные дата и время, потом идентификаторы часовых поясов и, наконец, хронологии. Сравнение «согласовано с equals» в соответствии с определением Comparable.
Если все сравниваемые объекты даты и времени принадлежат одной хронологии, дополнительный этап сравнения хронологий не требуется.
Эта реализация по умолчанию выполняет описанное выше сравнение.
- Определен в:
-
compareToв интерфейсеComparable<D extends ChronoLocalDate> - Параметры:
-
other- другая дата и время для сравнения, не null - Возвращает:
- значение компаратора: результат сравнения этой даты и времени со значениями
otherпо моменту времени, локальным дате и времени, идентификатору часового пояса и хронологии именно в указанном порядке; возвращается первый ненулевой результат, а если все результаты равны нулю — ноль - См. также:
isBefore
default boolean isBefore(ChronoZonedDateTime<?> other)
Этот метод отличается от сравнения в compareTo(ChronoZonedDateTime) тем, что сравнивает только моменты времени. Это эквивалентно использованию dateTime1.toInstant().isBefore(dateTime2.toInstant());.
Эта реализация по умолчанию сравнивает секунды от эпохи и наносекунды.
- Параметры:
-
other- другая дата и время для сравнения, не null - Возвращает:
- true, если этот момент времени предшествует указанной дате и времени
isAfter
default boolean isAfter(ChronoZonedDateTime<?> other)
Этот метод отличается от сравнения в compareTo(ChronoZonedDateTime) тем, что сравнивает только моменты времени. Это эквивалентно использованию dateTime1.toInstant().isAfter(dateTime2.toInstant());.
Эта реализация по умолчанию сравнивает секунды от эпохи и наносекунды.
- Параметры:
-
other- другая дата и время для сравнения, не null - Возвращает:
- true, если этот момент времени наступает позже указанной даты и времени
isEqual
default boolean isEqual(ChronoZonedDateTime<?> other)
Этот метод отличается от сравнения в compareTo(ChronoZonedDateTime) и equals(Object) тем, что сравнивает только моменты времени. Это эквивалентно использованию dateTime1.toInstant().equals(dateTime2.toInstant());.
Эта реализация по умолчанию сравнивает секунды от эпохи и наносекунды.
- Параметры:
-
other- другая дата и время для сравнения, не null - Возвращает:
- true, если момент времени равен моменту времени указанной даты и времени
equals
boolean equals(Object obj)
Сравнение выполняется на основе даты и времени со смещением и часового пояса. Чтобы сравнить совпадение момента времени на временной шкале, используйте compareTo(ChronoZonedDateTime). Сравниваются только объекты типа ChronoZonedDateTime, для объектов других типов возвращается false.
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.