Интерфейс 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 |
Возвращает копию этого времени с другим часовым поясом, сохраняя локальное время, если это возможно. |
Методы, объявленные в интерфейсе java.time.temporal.TemporalAccessor
get, range
Подробное описание методов
timeLineOrder
static Comparator<ChronoZonedDateTime<?>> timeLineOrder()
ChronoZonedDateTime в порядке временной линии, игнорируя хронологию. Этот компаратор отличается от сравнения в compareTo(java.time.chrono.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)
Это проверяет, может ли быть запрошено указанное поле для этой даты и времени. Если ложно, то вызов методов range, get и with(TemporalField, long) вызовет исключение.
Набор поддерживаемых полей определяется хронологией и обычно включает все ChronoField поля.
Если поле не является ChronoField, то результат этого метода получается путём вызова TemporalField.isSupportedBy(TemporalAccessor), передавая this в качестве аргумента. Поддерживается ли поле определяется полем.
- Определено в:
-
isSupportedв интерфейсеTemporalAccessor - Параметры:
-
field- поле для проверки, null возвращает false - Возвращает:
- true, если поле может быть запрошено, false в противном случае
isSupported
default boolean isSupported(TemporalUnit unit)
Это проверяет, может ли указанный объект TemporalUnit быть добавлен к этой дате или времени или вычтен из нее. Если ложь, то вызов методов plus(long, TemporalUnit) и minus вызовет исключение.
Набор поддерживаемых единиц определяется хронологией и обычно включает все ChronoUnit единицы, за исключением FOREVER.
Если объект TemporalUnit не является ChronoUnit, то результат этого метода получается путем вызова TemporalUnit.isSupportedBy(Temporal), передав this в качестве аргумента. Поддерживается ли объект TemporalUnit определяется самим объектом.
- Specified by:
-
isSupportedв интерфейсеTemporal - Parameters:
-
unit- объект TemporalUnit для проверки, null возвращает false - Returns:
- true, если объект TemporalUnit может быть добавлен/вычтен, 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
- Specified by:
-
withв интерфейсеTemporal - Parameters:
-
adjuster- корректировщик для использования, не null - Returns:
- объект того же типа с внесенной корректировкой, не null
- Throws:
-
DateTimeException- если корректировку невозможно внести -
ArithmeticException- если происходит переполнение числового типа
with
ChronoZonedDateTime<D> with(TemporalField field, long newValue)
Это возвращает новый объект, основанный на этом объекте, с измененным значением для указанного поля. Например, для LocalDate, это может быть использовано для установки года, месяца или дня месяца. Возвращаемый объект будет иметь тот же наблюдаемый тип, что и этот объект.
В некоторых случаях изменение поля не полностью определено. Например, если целевой объект — дата, представляющая 31 января, то изменение месяца на февраль будет неясным. В таких случаях поле отвечает за разрешение результата. Как правило, оно выберет предыдущую допустимую дату, которая в этом примере будет последним допустимым днем февраля.
- Specified by:
-
withв интерфейсеTemporal - Parameters:
-
field- поле, которое необходимо установить в результате, не null -
newValue- новое значение поля в результате - Returns:
- объект того же типа с установленным указанным полем, не null
- Throws:
-
DateTimeException- если поле невозможно установить -
ArithmeticException- если происходит переполнение числового типа
plus
default ChronoZonedDateTime<D> plus(TemporalAmount amount)
Это корректирует этот объект Temporal, добавляя в соответствии с правилами указанного значения. Значение обычно является 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, не гарантирует возвращение той же даты и времени.
- Specified by:
-
plusв интерфейсеTemporal - Parameters:
-
amount- величина для добавления, не null - Returns:
- объект того же типа с произведенной корректировкой, не null
- Throws:
-
DateTimeException- если добавление невозможно -
ArithmeticException- если происходит переполнение числового типа
plus
ChronoZonedDateTime<D> plus(long amountToAdd, TemporalUnit unit)
Этот метод возвращает новый объект, основанный на этом объекте, с добавленным указанным периодом. Например, для LocalDate, это может быть использовано для добавления количества лет, месяцев или дней. Возвращаемый объект будет иметь тот же наблюдаемый тип, что и этот объект.
В некоторых случаях изменение поля не полностью определено. Например, если целевой объект — дата, представляющая 31 января, то добавление одного месяца будет неясным. В таких случаях поле отвечает за разрешение результата. Как правило, оно выберет предыдущую допустимую дату, которая в этом примере будет последним допустимым днем февраля.
- Specified by:
-
plusв интерфейсеTemporal - Parameters:
-
amountToAdd- количество указанной единицы для добавления, может быть отрицательным -
unit- единица количества для добавления, не null - Returns:
- объект того же типа с добавленным указанным периодом, не null
- Throws:
-
DateTimeException- если единицу нельзя добавить -
ArithmeticException- если происходит переполнение числового типа
minus
default ChronoZonedDateTime<D> minus(TemporalAmount amount)
Это корректирует этот объект Temporal, вычитая согласно правилам указанного значения. Значение обычно является 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, не гарантирует возвращение той же даты и времени.
- Specified by:
-
minusв интерфейсеTemporal - Parameters:
-
amount- величина для вычитания, не null - Returns:
- объект того же типа с произведенной корректировкой, не null
- Throws:
-
DateTimeException- если вычитание невозможно -
ArithmeticException- если происходит переполнение числового типа
minus
default ChronoZonedDateTime<D> minus(long amountToSubtract, TemporalUnit unit)
Этот метод возвращает новый объект, основанный на этом объекте, с вычтенным указанным периодом. Например, для LocalDate, это может быть использовано для вычитания количества лет, месяцев или дней. Возвращаемый объект будет иметь тот же наблюдаемый тип, что и этот объект.
В некоторых случаях изменение поля не полностью определено. Например, если целевой объект — дата, представляющая 31 марта, то вычитание одного месяца будет неясным. В таких случаях поле отвечает за разрешение результата. Как правило, оно выберет предыдущую допустимую дату, которая в этом примере будет последним допустимым днем февраля.
- Specified by:
-
minusв интерфейсеTemporal - Parameters:
-
amountToSubtract- количество указанной единицы для вычитания, может быть отрицательным -
unit- единица количества для вычитания, не null - Returns:
- объект того же типа с вычтенным указанным периодом, не null
- Throws:
-
DateTimeException- если единицу нельзя вычесть -
ArithmeticException- если происходит переполнение числового типа
query
default <R> R query(TemporalQuery<R> query)
Это запрашивает эту дату и время с помощью указанного объекта стратегии запроса. Объект TemporalQuery определяет логику, используемую для получения результата. Прочитайте документацию запроса, чтобы понять, каким будет результат этого метода.
Результат этого метода получается путем вызова метода TemporalQuery.queryFrom(TemporalAccessor) на указанном запросе, передав this в качестве аргумента.
- Specified by:
-
queryв интерфейсеTemporalAccessor - Type Parameters:
R- тип результата- Parameters:
-
query- запрос для вызова, не null - Returns:
- результат запроса, может быть возвращен null (определяется запросом)
- Throws:
-
DateTimeException- если запрос выполнить невозможно (определяется запросом) -
ArithmeticException- если происходит переполнение числового типа (определяется запросом)
форматировать
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(java.time.chrono.ChronoZonedDateTime<?>) тем, что он сравнивает только момент времени даты и времени. Это эквивалентно использованию dateTime1.toInstant().isBefore(dateTime2.toInstant());.
Эта реализация по умолчанию выполняет сравнение на основе эпохи-секунд и наносекунд.
- Параметры:
-
other- другая дата и время для сравнения, не null - Возвращает:
- true, если этот момент времени раньше указанного
isAfter
default boolean isAfter(ChronoZonedDateTime<?> other)
Этот метод отличается от сравнения в compareTo(java.time.chrono.ChronoZonedDateTime<?>) тем, что он сравнивает только момент времени даты и времени. Это эквивалентно использованию dateTime1.toInstant().isAfter(dateTime2.toInstant());.
Эта реализация по умолчанию выполняет сравнение на основе эпохи-секунд и наносекунд.
- Параметры:
-
other- другая дата и время для сравнения, не null - Возвращает:
- true, если это позже, чем указанная дата и время
isEqual
default boolean isEqual(ChronoZonedDateTime<?> other)
Этот метод отличается от сравнения в compareTo(java.time.chrono.ChronoZonedDateTime<?>) и equals(java.lang.Object) тем, что он сравнивает только момент времени даты и времени. Это эквивалентно использованию dateTime1.toInstant().equals(dateTime2.toInstant());.
Эта реализация по умолчанию выполняет сравнение на основе эпохи-секунд и наносекунд.
- Параметры:
-
other- другая дата и время для сравнения, не null - Возвращает:
- true, если момент времени равен моменту времени указанной даты и времени
equals
boolean equals(Object obj)
Сравнение основано на дате и времени со смещением и зоне. Чтобы сравнить моменты времени на временной шкале, используйте compareTo(java.time.chrono.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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/chrono/ChronoZonedDateTime.html