Интерфейс 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 |
Возвращает копию этой даты и времени с другим часовым поясом, по возможности сохраняя локальные дату и время. |
Методы, объявленные в интерфейсе TemporalAccessor
get, 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— если значение поля нельзя задать -
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— если единицу измерения нельзя прибавить -
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— если единицу измерения нельзя вычесть -
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/time/chrono/ChronoZonedDateTime.html