Интерфейс ChronoZonedDateTime<D extends ChronoLocalDate>
- Параметры типа:
-
D- конкретный тип для даты этого момента времени
- Все суперинтерфейсы:
-
Comparable<ChronoZonedDateTime<?>>,Temporal,TemporalAccessor
- Все известные реализующие классы:
ZonedDateTime
public interface ChronoZonedDateTime<D extends ChronoLocalDate> extends Temporal, Comparable<ChronoZonedDateTime<?>>
Большинство приложений должны объявлять сигнатуры методов, поля и переменные как ZonedDateTime, а не этот интерфейс.
Объект ChronoZonedDateTime — это абстрактное представление даты-времени со смещением, где хронология, или календарная система, является подключаемой. Дата-время определяется с точки зрения полей, выраженных с помощью 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.
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Возвращает:
- дату-время с учетом зоны на основе этой даты-времени с меньшим смещением, не null
- Исключения:
-
DateTimeException- если правила не найдены для зоны -
DateTimeException- если для этой даты-времени нет действительных правил
withLaterOffsetAtOverlap
ChronoZonedDateTime<D> withLaterOffsetAtOverlap()
Этот метод имеет какой-либо эффект только при перекрытии временной линии, например, при переходе на летнее время осенью. В этом случае существуют два допустимых смещения для локального даты-времени. Вызов этого метода вернет дату-время с учетом зоны с большим из двух выбранных смещений.
Если этот метод вызван, когда нет перекрытия, возвращается this.
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Возвращает:
- дату-время с учетом зоны на основе этой даты-времени с большим смещением, не null
- Исключения:
-
DateTimeException- если правила не найдены для зоны -
DateTimeException- если для этой даты-времени нет действительных правил
withZoneSameLocal
ChronoZonedDateTime<D> withZoneSameLocal(ZoneId zone)
Этот метод изменяет часовой пояс и сохраняет локальное время. Локальное время изменяется только в том случае, если оно недействительно для новой зоны.
Чтобы изменить зону и скорректировать локальное время, используйте withZoneSameInstant(ZoneId).
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Параметры:
-
zone- часовой пояс, на который нужно изменить, не null - Возвращает:
- дату-время с учетом зоны на основе этой даты-времени с запрошенной зоной, не null
withZoneSameInstant
ChronoZonedDateTime<D> withZoneSameInstant(ZoneId zone)
Этот метод изменяет часовой пояс и сохраняет момент времени. Это обычно приводит к изменению локального времени.
Этот метод основан на сохранении одного и того же момента, таким образом, разрывы и перекрытия на временной линии локального времени не влияют на результат.
Чтобы изменить смещение, сохраняя локальное время, используйте withZoneSameLocal(ZoneId).
- Параметры:
-
zone- часовой пояс, на который нужно изменить, не null - Возвращает:
- дату-время с учетом зоны на основе этой даты-времени с запрошенной зоной, не 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 в качестве аргумента. Поддерживается ли единица измерения, определяется единицей.
- Specified by:
-
isSupportedв интерфейсеTemporal - Parameters:
-
unit- единица измерения для проверки, null возвращает false - Returns:
- 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
- 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)
Корректирует эту временную метку, добавляя в соответствии с правилами указанного значения. Значение обычно является 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)
Корректирует эту временную метку, вычитая в соответствии с правилами указанного значения. Значение обычно является 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- если произошло переполнение числовых значений (определяется запросом)
format
default String format(DateTimeFormatter formatter)
Эта дата и время будут переданы в форматтер для получения строки.
Реализация по умолчанию должна работать следующим образом:
return formatter.format(this);
- Parameters:
-
formatter- используемый форматтер, не null - Returns:
- строка отформатированной даты и времени, не null
- Throws:
-
DateTimeException- если при печати произошла ошибка
toInstant
default Instant toInstant()
Instant. Возвращает Instant, представляющий ту же точку на временной шкале, что и эта дата и время. Вычисление комбинирует локальную дату и время и смещение.
- Returns:
Instantпредставляющий тот же момент времени, не null
toEpochSecond
default long toEpochSecond()
Для вычисления значения epoch-second, которое представляет собой количество прошедших секунд с 1970-01-01T00:00:00Z, используется локальная дата и время и смещение. Моменты времени после эпохи имеют положительное значение, а до эпохи — отрицательное.
- Returns:
- количество секунд с эпохи 1970-01-01T00:00:00Z
compareTo
default int compareTo(ChronoZonedDateTime<?> other)
Сравнение основано сначала на мгновении времени, затем на локальной дате и времени, затем на идентификаторе зоны, затем на хронологии. Оно "согласуется с equals", как определено в Comparable.
Если все сравниваемые объекты времени находятся в одной хронологии, дополнительный этап хронологии не требуется.
Это реализация по умолчанию выполняет сравнение, определенное выше.
- Specified by:
-
compareToв интерфейсеComparable<D extends ChronoLocalDate> - Parameters:
-
other- другое время для сравнения, не null - Returns:
- значение сравнения, представляющее сравнение этого с
otherзначениями для момента времени, локальной даты и времени, идентификатора зоны и хронологии в порядке, возвращая первое ненулевое значение, а в противном случае возвращая ноль - See Also:
isBefore
default boolean isBefore(ChronoZonedDateTime<?> other)
Этот метод отличается от сравнения в compareTo(java.time.chrono.ChronoZonedDateTime<?>) тем, что сравнивает только мгновение времени даты и времени. Это эквивалентно использованию dateTime1.toInstant().isBefore(dateTime2.toInstant());.
Эта реализация по умолчанию выполняет сравнение на основе epoch-секунд и наносекунд.
- Parameters:
-
other- другое время для сравнения, не null - Returns:
- true, если этот момент времени раньше указанного времени
isAfter
default boolean isAfter(ChronoZonedDateTime<?> other)
Этот метод отличается от сравнения в compareTo(java.time.chrono.ChronoZonedDateTime<?>) тем, что сравнивает только мгновение времени даты и времени. Это эквивалентно использованию dateTime1.toInstant().isAfter(dateTime2.toInstant());.
Эта реализация по умолчанию выполняет сравнение на основе epoch-секунд и наносекунд.
- Parameters:
-
other- другое время для сравнения, не null - Returns:
- true, если это время позже указанного времени
isEqual
default boolean isEqual(ChronoZonedDateTime<?> other)
Этот метод отличается от сравнения в compareTo(java.time.chrono.ChronoZonedDateTime<?>) и equals(java.lang.Object) тем, что сравнивает только мгновение времени даты и времени. Это эквивалентно использованию dateTime1.toInstant().equals(dateTime2.toInstant());.
Эта реализация по умолчанию выполняет сравнение на основе epoch-секунд и наносекунд.
- Parameters:
-
other- другое время для сравнения, не null - Returns:
- true, если мгновение времени равно мгновению времени указанного времени
equals
boolean equals(Object obj)
Сравнение основано на смещённом времени и часовой зоне. Чтобы сравнить моменты времени на временной шкале, используйте compareTo(java.time.chrono.ChronoZonedDateTime<?>). Сравниваются только объекты типа ChronoZonedDateTime, другие типы возвращают false.
- Overrides:
-
equalsв классеObject - Parameters:
-
obj- объект для проверки, null возвращает false - Returns:
- true, если это равно другому времени
- See Also:
hashCode
int hashCode()
- Overrides:
-
hashCodeв классеObject - Returns:
- подходящий хеш-код
- See Also:
toString
String toString()
String. Вывод будет включать полное время с часовой зоной.
- Overrides:
-
toStringв классеObject - Returns:
- строковое представление этого времени, не null
© 1993, 2023, 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/21/docs/api/java.base/java/time/chrono/ChronoZonedDateTime.html