Интерфейс 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<D> |
minus |
Возвращает объект того же типа, что и этот объект, с вычтенным указанным периодом. |
default ChronoZonedDateTime<D> |
minus |
Возвращает объект того же типа, что и этот объект, с вычтенным количеством. |
ChronoZonedDateTime<D> |
plus |
Возвращает объект того же типа, что и этот объект, с добавленным указанным периодом. |
default ChronoZonedDateTime<D> |
plus |
Возвращает объект того же типа, что и этот объект, с добавленным количеством. |
default <R> R |
query |
Запрашивает этот момент времени с использованием указанного запроса. |
static Comparator<ChronoZonedDateTime<?>> |
timeLineOrder() |
Получает компаратор, который сравнивает ChronoZonedDateTime в порядке временной линии, игнорируя хронологию. |
default long |
toEpochSecond() |
Преобразует этот момент времени в количество секунд с начала эпохи 1970-01-01T00:00:00Z. |
default Instant |
toInstant() |
Преобразует этот момент времени в Instant. |
default D |
toLocalDate() |
Получает локальную дату этого момента времени. |
ChronoLocalDateTime<D> |
toLocalDateTime() |
Получает локальный момент времени этого момента времени. |
default LocalTime |
toLocalTime() |
Получает локальное время этого момента времени. |
String |
toString() |
Выводит этот момент времени как String. |
default ChronoZonedDateTime<D> |
with |
Возвращает измененный объект того же типа, что и этот объект, с произведенным изменением. |
ChronoZonedDateTime<D> |
with |
Возвращает объект того же типа, что и этот объект, с изменённым указанным полем. |
ChronoZonedDateTime<D> |
withEarlierOffsetAtOverlap() |
Возвращает копию этого момента времени, изменяя смещение часового пояса на более раннее из двух допустимых смещений при перекрытии временной линии. |
ChronoZonedDateTime<D> |
withLaterOffsetAtOverlap() |
Возвращает копию этого момента времени, изменяя смещение часового пояса на более позднее из двух допустимых смещений при перекрытии временной линии. |
ChronoZonedDateTime<D> |
withZoneSameInstant |
Возвращает копию этого момента времени с другим часовым поясом, сохраняя момент. |
ChronoZonedDateTime<D> |
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)
Проверяет, можно ли добавить или вычесть указанную единицу измерения к этой дате и времени. Если 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:
- значение сравнения, отрицательное, если меньше, положительное, если больше
isBefore
default boolean isBefore(ChronoZonedDateTime<?> other)
Этот метод отличается от сравнения в compareTo(java.time.chrono.ChronoZonedDateTime<?>) тем, что он сравнивает только момент времени даты и времени. Это эквивалентно использованию dateTime1.toInstant().isBefore(dateTime2.toInstant());.
Эта реализация по умолчанию выполняет сравнение на основе epoch-second и nano-of-second.
- Parameters:
-
other- другая дата и время для сравнения, не null - Returns:
- true, если этот момент времени предшествует указанной дате и времени
isAfter
default boolean isAfter(ChronoZonedDateTime<?> other)
Этот метод отличается от сравнения в compareTo(java.time.chrono.ChronoZonedDateTime<?>) тем, что он сравнивает только момент времени даты и времени. Это эквивалентно использованию dateTime1.toInstant().isAfter(dateTime2.toInstant());.
Эта реализация по умолчанию выполняет сравнение на основе epoch-second и nano-of-second.
- 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-second и nano-of-second.
- 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, 2021, 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/17/docs/api/java.base/java/time/chrono/ChronoZonedDateTime.html