Spec-Zone.ru › OpenJDK 21

Класс ZonedDateTime

java.lang.Object
java.time.ZonedDateTime
Все реализованные интерфейсы:
Serializable, Comparable<ChronoZonedDateTime<?>>, ChronoZonedDateTime<LocalDate>, Temporal, TemporalAccessor
public final class ZonedDateTime extends Object implements Temporal, ChronoZonedDateTime<LocalDate>, Serializable
Дата и время с часовым поясом в системе календаря ISO-8601, например 2007-12-03T10:15:30+01:00 Europe/Paris.

ZonedDateTime — это неизменяемое представление даты и времени с часовым поясом. Этот класс хранит все поля даты и времени с точностью до наносекунд, а также часовой пояс с смещением часового пояса, используемым для обработки неоднозначных локальных дат и времени. Например, значение «2 октября 2007 года в 13:45:30.123456789 +02:00 по часовому поясу Europe/Paris» может быть сохранено в ZonedDateTime.

Этот класс обрабатывает преобразование из локального часового пояса LocalDateTime в мгновенный часовой пояс Instant. Разница между двумя часовыми поясами — смещение от UTC/Гринвича, представленное ZoneOffset.

Преобразование между двумя часовыми поясами включает в себя вычисление смещения с помощью rules, доступного из ZoneId. Получение смещения для мгновенного момента времени просто, так как для каждого мгновенного момента времени существует ровно одно допустимое смещение. В отличие от этого, получение смещения для локальной даты и времени не так просто. Существует три случая:

  • Нормальный случай, с одним допустимым смещением. В подавляющем большинстве случаев действует нормальный случай, когда для локальной даты и времени существует единственное допустимое смещение.
  • Разрыв, с нулевыми допустимыми смещениями. Это происходит, когда часы перескакивают вперёд, обычно из-за весеннего перехода на летнее время от «зимнего» к «летнему». В разрыве значения локальной даты и времени не имеют допустимого смещения.
  • Перекрытие, с двумя допустимыми смещениями. Это происходит, когда часы переводятся назад, обычно из-за осеннего перехода на зимнее время от «летнего» к «зимнему». В перекрытии значения локальной даты и времени имеют два допустимых смещения.

Любой метод, который прямо или косвенно преобразует локальную дату и время в мгновенный момент времени, получая смещение, потенциально может быть сложным.

Для разрывов общая стратегия состоит в том, что если локальная дата и время попадают в середину разрыва, то результирующее значение zoned date-time будет иметь локальную дату и время, сдвинутую вперёд на длительность разрыва, что приведёт к дате и времени в более позднем смещении, обычно «летнее» время.

Для перекрытий общая стратегия состоит в том, что если локальная дата и время попадают в середину перекрытия, то сохраняется предыдущее смещение. Если предыдущего смещения нет или оно недействительно, то используется более раннее смещение, обычно «летнее» время. Два дополнительных метода, withEarlierOffsetAtOverlap() и withLaterOffsetAtOverlap(), помогают управлять случаем перекрытия.

С точки зрения проектирования, этот класс следует рассматривать в первую очередь как комбинацию LocalDateTime и ZoneId. ZoneOffset — это важная, но второстепенная информация, используемая для обеспечения того, что класс представляет собой мгновение, особенно во время перекрытия летнего времени.

Это класc типа значений; программисты должны рассматривать экземпляры, которые равны, как взаимозаменяемые и не должны использовать экземпляры для синхронизации, иначе может произойти непредсказуемое поведение. Например, в будущих версиях синхронизация может завершиться неудачей. Для сравнения следует использовать метод equals.

Требования к реализации:
ZonedDateTime хранит состояние, эквивалентное трём отдельным объектам: LocalDateTime, ZoneId и разрешённому ZoneOffset. Смещение и локальная дата и время используются для определения мгновенного момента времени при необходимости. Идентификатор часового пояса используется для получения правил того, как и когда изменяется смещение. Смещение нельзя устанавливать свободно, так как часовой пояс контролирует допустимые смещения.

Этот класс неизменяемый и потокобезопасный.

С:
1.8
См. также:
  • Сериализованная форма

Краткое описание методов

Модификатор и тип Метод Описание
boolean equals(Object obj)
Проверяет, равна ли эта дата-время другой дате-времени.
String format(DateTimeFormatter formatter)
Форматирует эту дату-время с использованием указанного форматера.
static ZonedDateTime from(TemporalAccessor temporal)
Получает экземпляр ZonedDateTime из временного объекта.
int get(TemporalField field)
Получает значение указанного поля из этой даты-времени как int.
int getDayOfMonth()
Получает поле день месяца.
DayOfWeek getDayOfWeek()
Получает поле день недели, которое является перечислением DayOfWeek.
int getDayOfYear()
Получает поле день года.
int getHour()
Получает поле час.
long getLong(TemporalField field)
Получает значение указанного поля из этой даты-времени как long.
int getMinute()
Получает поле минута.
Month getMonth()
Получает поле месяц с использованием перечисления Month.
int getMonthValue()
Получает поле месяц от 1 до 12.
int getNano()
Получает поле наносекунда.
ZoneOffset getOffset()
Получает смещение зоны, например, '+01:00'.
int getSecond()
Получает поле секунда.
int getYear()
Получает поле год.
ZoneId getZone()
Получает часовой пояс, например, 'Europe/Paris'.
int hashCode()
Хеш-код для этой даты-времени.
boolean isSupported(TemporalField field)
Проверяет, поддерживается ли указанное поле.
boolean isSupported(TemporalUnit unit)
Проверяет, поддерживается ли указанная единица.
ZonedDateTime minus(long amountToSubtract, TemporalUnit unit)
Возвращает копию этой даты-времени с вычтенным указанным значением.
ZonedDateTime minus(TemporalAmount amountToSubtract)
Возвращает копию этой даты-времени с вычтенным указанным значением.
ZonedDateTime minusDays(long days)
Возвращает копию этого ZonedDateTime с вычтенным указанным количеством дней.
ZonedDateTime minusHours(long hours)
Возвращает копию этого ZonedDateTime с вычтенным указанным количеством часов.
ZonedDateTime minusMinutes(long minutes)
Возвращает копию этого ZonedDateTime с вычтенным указанным количеством минут.
ZonedDateTime minusMonths(long months)
Возвращает копию этого ZonedDateTime с вычтенным указанным количеством месяцев.
ZonedDateTime minusNanos(long nanos)
Возвращает копию этого ZonedDateTime с вычтенным указанным количеством наносекунд.
ZonedDateTime minusSeconds(long seconds)
Возвращает копию этого ZonedDateTime с вычтенным указанным количеством секунд.
ZonedDateTime minusWeeks(long weeks)
Возвращает копию этого ZonedDateTime с вычтенным указанным количеством недель.
ZonedDateTime minusYears(long years)
Возвращает копию этого ZonedDateTime с вычтенным указанным количеством лет.
static ZonedDateTime now()
Получает текущую дату-время из системных часов в часовом поясе по умолчанию.
static ZonedDateTime now(Clock clock)
Получает текущую дату-время из указанных часов.
static ZonedDateTime now(ZoneId zone)
Получает текущую дату-время из системных часов в указанном часовом поясе.
static ZonedDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond, ZoneId zone)
Получает экземпляр ZonedDateTime из года, месяца, дня, часа, минуты, секунды, наносекунды и часового пояса.
static ZonedDateTime of(LocalDate date, LocalTime time, ZoneId zone)
Получает экземпляр ZonedDateTime из локальной даты и времени.
static ZonedDateTime of(LocalDateTime localDateTime, ZoneId zone)
Получает экземпляр ZonedDateTime из локальной даты-времени.
static ZonedDateTime ofInstant(Instant instant, ZoneId zone)
Получает экземпляр ZonedDateTime из Instant.
static ZonedDateTime ofInstant(LocalDateTime localDateTime, ZoneOffset offset, ZoneId zone)
Получает экземпляр ZonedDateTime из момента, образованного объединением локальной даты-времени и смещения.
static ZonedDateTime ofLocal(LocalDateTime localDateTime, ZoneId zone, ZoneOffset preferredOffset)
Получает экземпляр ZonedDateTime из локальной даты-времени, используя предпочтительное смещение, если это возможно.
static ZonedDateTime ofStrict(LocalDateTime localDateTime, ZoneOffset offset, ZoneId zone)
Получает экземпляр ZonedDateTime строго проверяя комбинацию локальной даты-времени, смещения и идентификатора зоны.
static ZonedDateTime parse(CharSequence text)
Получает экземпляр ZonedDateTime из текстовой строки, такой как 2007-12-03T10:15:30+01:00[Europe/Paris].
static ZonedDateTime parse(CharSequence text, DateTimeFormatter formatter)
Получает экземпляр ZonedDateTime из текстовой строки с использованием определенного форматера.
ZonedDateTime plus(long amountToAdd, TemporalUnit unit)
Возвращает копию этой даты-времени с добавленным указанным значением.
ZonedDateTime plus(TemporalAmount amountToAdd)
Возвращает копию этой даты-времени с добавленным указанным значением.
ZonedDateTime plusDays(long days)
Возвращает копию этого ZonedDateTime с добавленным указанным количеством дней.
ZonedDateTime plusHours(long hours)
Возвращает копию этого ZonedDateTime с добавленным указанным количеством часов.
ZonedDateTime plusMinutes(long minutes)
Возвращает копию этого ZonedDateTime с добавленным указанным количеством минут.
ZonedDateTime plusMonths(long months)
Возвращает копию этого ZonedDateTime с добавленным указанным количеством месяцев.
ZonedDateTime plusNanos(long nanos)
Возвращает копию этого ZonedDateTime с добавленным указанным количеством наносекунд.
ZonedDateTime plusSeconds(long seconds)
Возвращает копию этого ZonedDateTime с добавленным указанным количеством секунд.
ZonedDateTime plusWeeks(long weeks)
Возвращает копию этого ZonedDateTime с добавленным указанным количеством недель.
ZonedDateTime plusYears(long years)
Возвращает копию этого ZonedDateTime с добавленным указанным количеством лет.
<R> R query(TemporalQuery<R> query)
Запрашивает эту дату-время с использованием указанного запроса.
ValueRange range(TemporalField field)
Получает диапазон допустимых значений для указанного поля.
LocalDate toLocalDate()
Получает LocalDate часть этой даты-времени.
LocalDateTime toLocalDateTime()
Получает LocalDateTime часть этой даты-времени.
LocalTime toLocalTime()
Получает LocalTime часть этой даты-времени.
OffsetDateTime toOffsetDateTime()
Преобразует эту дату-время в OffsetDateTime.
String toString()
Выводит эту дату-время как String, например, 2007-12-03T10:15:30+01:00[Europe/Paris].
ZonedDateTime truncatedTo(TemporalUnit unit)
Возвращает копию этого ZonedDateTime с усеченным временем.
long until(Temporal endExclusive, TemporalUnit unit)
Вычисляет количество времени до другой даты-времени в заданных единицах.
ZonedDateTime with(TemporalAdjuster adjuster)
Возвращает скорректированную копию этой даты-времени.
ZonedDateTime with(TemporalField field, long newValue)
Возвращает копию этой даты-времени с заданным полем, установленным на новое значение.
ZonedDateTime withDayOfMonth(int dayOfMonth)
Возвращает копию этого ZonedDateTime с изменённым числом дня месяца.
ZonedDateTime withDayOfYear(int dayOfYear)
Возвращает копию этого ZonedDateTime с изменённым номером дня года.
ZonedDateTime withEarlierOffsetAtOverlap()
Возвращает копию этой даты-времени, изменяя смещение часового пояса на меньшее из двух допустимых смещений при перекрытии временных линий.
ZonedDateTime withFixedOffsetZone()
Возвращает копию этой даты-времени с идентификатором часового пояса, установленным на смещение.
ZonedDateTime withHour(int hour)
Возвращает копию этого ZonedDateTime с изменённым часом суток.
ZonedDateTime withLaterOffsetAtOverlap()
Возвращает копию этой даты-времени, изменяя смещение часового пояса на большее из двух допустимых смещений при перекрытии временных линий.
ZonedDateTime withMinute(int minute)
Возвращает копию этого ZonedDateTime с изменённой минутой часа.
ZonedDateTime withMonth(int month)
Возвращает копию этого ZonedDateTime с изменённым месяцем года.
ZonedDateTime withNano(int nanoOfSecond)
Возвращает копию этого ZonedDateTime с изменёнными наносекундами секунды.
ZonedDateTime withSecond(int second)
Возвращает копию этого ZonedDateTime с изменённой секундой минуты.
ZonedDateTime withYear(int year)
Возвращает копию этого ZonedDateTime с изменённым годом.
ZonedDateTime withZoneSameInstant(ZoneId zone)
Возвращает копию этой даты-времени с другим часовым поясом, сохраняя момент времени.
ZonedDateTime withZoneSameLocal(ZoneId zone)
Возвращает копию этой даты-времени с другим часовым поясом, сохраняя локальную дату-время, если это возможно.

Методы, объявленные в классе java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Методы, объявленные в интерфейсе java.time.chrono.ChronoZonedDateTime

compareTo, getChronology, isAfter, isBefore, isEqual, toEpochSecond, toInstant

Краткое описание методов

now

public static ZonedDateTime now()
Получает текущую дату и время от системных часов в часовом поясе по умолчанию.

Это обратится к system clock в часовом поясе по умолчанию, чтобы получить текущую дату и время. Зона и смещение будут установлены на основе часового пояса в часах.

Использование этого метода предотвратит возможность использования альтернативных часов для тестирования, поскольку часы жестко закодированы.

Возвращает:
текущую дату и время с использованием системных часов, не null

now

public static ZonedDateTime now(ZoneId zone)
Получает текущую дату и время от системных часов в указанном часовом поясе.

Это обратится к system clock, чтобы получить текущую дату и время. Указание часового пояса позволяет избежать зависимости от часового пояса по умолчанию. Смещение будет рассчитано из указанного часового пояса.

Использование этого метода предотвратит возможность использования альтернативных часов для тестирования, поскольку часы жестко закодированы.

Параметры:
zone - идентификатор зоны, не null
Возвращает:
текущую дату и время с использованием системных часов, не null

now

public static ZonedDateTime now(Clock clock)
Получает текущую дату и время от указанных часов.

Это обратится к указанным часам, чтобы получить текущую дату и время. Зона и смещение будут установлены на основе часового пояса в часах.

Использование этого метода позволяет использовать альтернативные часы для тестирования. Альтернативные часы могут быть введены с помощью dependency injection.

Параметры:
clock - используемые часы, не null
Возвращает:
текущую дату и время, не null

of

public static ZonedDateTime of(LocalDate date, LocalTime time, ZoneId zone)
Получает экземпляр ZonedDateTime из локальной даты и времени.

Это создает зонированную дату и время, максимально точно соответствующие входной локальной дате и времени. Правила часовых поясов, такие как летнее время, означают, что не каждая локальная дата и время действительны для указанной зоны, поэтому локальная дата и время могут быть скорректированы.

Локальная дата и время сначала объединяются для формирования локальной даты и времени. Затем локальная дата и время преобразуются в единственный момент на временной шкале. Это достигается путем поиска допустимого смещения от UTC/Гринвича для локальной даты и времени, как определено в rules идентификатора зоны.

В большинстве случаев существует только одно допустимое смещение для локальной даты и времени. В случае перекрытия, когда часы переводятся назад, существуют два допустимых смещения. Этот метод использует более раннее смещение, обычно соответствующее «лету».

В случае разрыва, когда часы переводятся вперед, допустимого смещения нет. Вместо этого локальная дата и время корректируются, чтобы быть позже на длину разрыва. Для типичного изменения летнего времени на один час локальная дата и время будут перемещены на один час позже в смещение, обычно соответствующее «лету».

Параметры:
date - локальная дата, не null
time - локальное время, не null
zone - часовой пояс, не null
Возвращает:
смещенная дата и время, не null

of

public static ZonedDateTime of(LocalDateTime localDateTime, ZoneId zone)
Получает экземпляр ZonedDateTime из локальной даты и времени.

Это создает зонированную дату и время, максимально точно соответствующие входной локальной дате и времени. Правила часовых поясов, такие как летнее время, означают, что не каждая локальная дата и время действительны для указанной зоны, поэтому локальная дата и время могут быть скорректированы.

Локальная дата и время преобразуются в единственный момент на временной шкале. Это достигается путем поиска допустимого смещения от UTC/Гринвича для локальной даты и времени, как определено в rules идентификатора зоны.

В большинстве случаев существует только одно допустимое смещение для локальной даты и времени. В случае перекрытия, когда часы переводятся назад, существуют два допустимых смещения. Этот метод использует более раннее смещение, обычно соответствующее «лету».

В случае разрыва, когда часы переводятся вперед, допустимого смещения нет. Вместо этого локальная дата и время корректируются, чтобы быть позже на длину разрыва. Для типичного изменения летнего времени на один час локальная дата и время будут перемещены на один час позже в смещение, обычно соответствующее «лету».

Параметры:
localDateTime - локальная дата и время, не null
zone - часовой пояс, не null
Возвращает:
зонированная дата и время, не null

of

public static ZonedDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond, ZoneId zone)
Получает экземпляр ZonedDateTime из года, месяца, дня, часа, минуты, секунды, наносекунды и часового пояса.

Это создает зонированную дату и время, максимально точно соответствующие локальной дате и времени семи указанных полей. Правила часовых поясов, такие как летнее время, означают, что не каждая локальная дата и время действительны для указанной зоны, поэтому локальная дата и время могут быть скорректированы.

Локальная дата и время преобразуются в единственный момент на временной шкале. Это достигается путем поиска допустимого смещения от UTC/Гринвича для локальной даты и времени, как определено в rules идентификатора зоны.

В большинстве случаев существует только одно допустимое смещение для локальной даты и времени. В случае перекрытия, когда часы переводятся назад, существуют два допустимых смещения. Этот метод использует более раннее смещение, обычно соответствующее «лету».

В случае разрыва, когда часы переводятся вперед, допустимого смещения нет. Вместо этого локальная дата и время корректируются, чтобы быть позже на длину разрыва. Для типичного изменения летнего времени на один час локальная дата и время будут перемещены на один час позже в смещение, обычно соответствующее «лету».

Этот метод существует в основном для написания тестовых случаев. Не тестовый код обычно использует другие методы для создания смещенного времени. LocalDateTime имеет пять дополнительных удобных вариантов эквивалентного метода фабрики, принимающего меньшее количество аргументов. Они не предоставляются здесь, чтобы уменьшить объем API.

Параметры:
year - год для представления, от MIN_YEAR до MAX_YEAR
month - месяц года для представления, от 1 (январь) до 12 (декабрь)
dayOfMonth - день месяца для представления, от 1 до 31
hour - час дня для представления, от 0 до 23
minute - минута часа для представления, от 0 до 59
second - секунда минуты для представления, от 0 до 59
nanoOfSecond - наносекунда для представления, от 0 до 999 999 999
zone - часовой пояс, не null
Возвращает:
смещенная дата и время, не null
Исключения:
DateTimeException - если значение любого поля выходит за пределы диапазона или если день месяца недействителен для месяца-года

ofLocal

public static ZonedDateTime ofLocal(LocalDateTime localDateTime, ZoneId zone, ZoneOffset preferredOffset)
Получает экземпляр ZonedDateTime из локальной даты и времени, используя предпочтительное смещение, если это возможно.

Локальная дата и время преобразуются в единственный момент на временной шкале. Это достигается путем поиска допустимого смещения от UTC/Гринвича для локальной даты и времени, как определено в rules идентификатора зоны.

В большинстве случаев существует только одно допустимое смещение для локальной даты и времени. В случае перекрытия, когда часы переводятся назад, существуют два допустимых смещения. Если предпочтительное смещение является одним из допустимых смещений, то оно используется. В противном случае используется более раннее допустимое смещение, обычно соответствующее «лету».

В случае разрыва, когда часы переводятся вперед, допустимого смещения нет. Вместо этого локальная дата и время корректируются, чтобы быть позже на длину разрыва. Для типичного изменения летнего времени на один час локальная дата и время будут перемещены на один час позже в смещение, обычно соответствующее «лету».

Параметры:
localDateTime - локальная дата и время, не null
zone - часовой пояс, не null
preferredOffset - смещение зоны, null, если нет предпочтения
Возвращает:
зонированная дата и время, не null

ofInstant

public static ZonedDateTime ofInstant(Instant instant, ZoneId zone)
Получает экземпляр ZonedDateTime из Instant.

Это создает зонированную дату и время с тем же моментом времени, что и указанный. Вызов ChronoZonedDateTime.toInstant() вернет момент времени, равный использованному здесь.

Преобразование момента времени в зонированную дату и время просто, так как для каждого момента времени существует только одно допустимое смещение.

Параметры:
instant - момент времени для создания даты и времени, не null
zone - часовой пояс, не null
Возвращает:
зонированная дата и время, не null
Исключения:
DateTimeException - если результат выходит за пределы поддерживаемого диапазона

ofInstant

public static ZonedDateTime ofInstant(LocalDateTime localDateTime, ZoneOffset offset, ZoneId zone)
Получает экземпляр ZonedDateTime из момента времени, образованного путем объединения локальной даты и времени и смещения.

Это создает зонированную дату и время с помощью combining LocalDateTime и ZoneOffset. Эта комбинация однозначно определяет момент времени без неоднозначности.

Преобразование момента времени в зонированную дату и время просто, так как для каждого момента времени существует только одно допустимое смещение. Если допустимое смещение отличается от указанного смещения, то дата и время и смещение зонированной даты и времени будут отличаться от указанных.

Если ZoneId, который будет использоваться, является ZoneOffset, этот метод эквивалентен of(LocalDateTime, ZoneId).

Параметры:
localDateTime - локальная дата и время, не null
offset - смещение зоны, не null
zone - часовой пояс, не null
Возвращает:
зонированная дата и время, не null

ofStrict

public static ZonedDateTime ofStrict(LocalDateTime localDateTime, ZoneOffset offset, ZoneId zone)
Получает экземпляр ZonedDateTime с жёсткой проверкой комбинации локальной даты-времени, смещения и идентификатора зоны.

Это создаёт объект zoned date-time, гарантируя, что смещение является допустимым для локальной даты-времени согласно правилам указанной зоны. Если смещение недопустимо, выбрасывается исключение.

Parameters:
localDateTime - локальная дата-время, не null
offset - смещение зоны, не null
zone - часовой пояс, не null
Returns:
объект zoned date-time, не null
Throws:
DateTimeException - если комбинация аргументов недопустима

from

public static ZonedDateTime from(TemporalAccessor temporal)
Получает экземпляр ZonedDateTime из объекта временной метки.

Это получает объект zoned date-time на основе указанного временного объекта. Объект TemporalAccessor представляет собой произвольный набор информации о дате и времени, который эта фабрика преобразует в экземпляр ZonedDateTime.

Преобразование сначала получит ZoneId из временного объекта, перейдя к ZoneOffset при необходимости. Затем оно попытается получить Instant, перейдя к LocalDateTime при необходимости. Результатом будет либо комбинация ZoneId или ZoneOffset со Instant или LocalDateTime. Реализации разрешено выполнять оптимизации, такие как доступ к тем полям, которые эквивалентны соответствующим объектам.

Этот метод соответствует подписи функционального интерфейса TemporalQuery, позволяя использовать его в качестве запроса с помощью ссылки на метод, ZonedDateTime::from.

Parameters:
temporal - временной объект для преобразования, не null
Returns:
объект zoned date-time, не null
Throws:
DateTimeException - если невозможно преобразовать в ZonedDateTime

parse

public static ZonedDateTime parse(CharSequence text)
Получает экземпляр ZonedDateTime из текстовой строки, например, 2007-12-03T10:15:30+01:00[Europe/Paris].

Строка должна представлять собой допустимую дату-время и анализируется с помощью DateTimeFormatter.ISO_ZONED_DATE_TIME.

Parameters:
text - текст для анализа, например, "2007-12-03T10:15:30+01:00[Europe/Paris]", не null
Returns:
проанализированный объект zoned date-time, не null
Throws:
DateTimeParseException - если текст не может быть проанализирован

parse

public static ZonedDateTime parse(CharSequence text, DateTimeFormatter formatter)
Получает экземпляр ZonedDateTime из текстовой строки, используя определённый форматер.

Текст анализируется с помощью форматера, возвращая дату-время.

Parameters:
text - текст для анализа, не null
formatter - форматер для использования, не null
Returns:
проанализированный объект zoned date-time, не null
Throws:
DateTimeParseException - если текст не может быть проанализирован

isSupported

public boolean isSupported(TemporalField field)
Проверяет, поддерживается ли указанное поле.

Проверяет, можно ли запросить у этого объекта дату-время указанное поле. Если false, то вызов методов range, get и with(TemporalField, long) вызовет исключение.

Если поле является ChronoField, то запрос реализуется здесь. Поддерживаемые поля:

  • NANO_OF_SECOND
  • NANO_OF_DAY
  • MICRO_OF_SECOND
  • MICRO_OF_DAY
  • MILLI_OF_SECOND
  • MILLI_OF_DAY
  • SECOND_OF_MINUTE
  • SECOND_OF_DAY
  • MINUTE_OF_HOUR
  • MINUTE_OF_DAY
  • HOUR_OF_AMPM
  • CLOCK_HOUR_OF_AMPM
  • HOUR_OF_DAY
  • CLOCK_HOUR_OF_DAY
  • AMPM_OF_DAY
  • DAY_OF_WEEK
  • ALIGNED_DAY_OF_WEEK_IN_MONTH
  • ALIGNED_DAY_OF_WEEK_IN_YEAR
  • DAY_OF_MONTH
  • DAY_OF_YEAR
  • EPOCH_DAY
  • ALIGNED_WEEK_OF_MONTH
  • ALIGNED_WEEK_OF_YEAR
  • MONTH_OF_YEAR
  • PROLEPTIC_MONTH
  • YEAR_OF_ERA
  • YEAR
  • ERA
  • INSTANT_SECONDS
  • OFFSET_SECONDS
Все остальные ChronoField объекты вернут false.

Если поле не является ChronoField, то результат этого метода получается путём вызова TemporalField.isSupportedBy(TemporalAccessor) с передачей this в качестве аргумента. Поддерживается ли поле, определяется этим полем.

Specified by:
isSupported in interface ChronoZonedDateTime<LocalDate>
Specified by:
isSupported in interface TemporalAccessor
Parameters:
field - поле для проверки, null возвращает false
Returns:
true, если поле поддерживается этой датой-временем, false, если нет

isSupported

public boolean isSupported(TemporalUnit unit)
Проверяет, поддерживается ли указанная единица измерения.

Проверяет, можно ли добавить или вычесть указанную единицу измерения из этой даты-времени. Если false, то вызов методов plus(long, TemporalUnit) и minus вызовет исключение.

Если единица измерения является ChronoUnit, то запрос реализуется здесь. Поддерживаемые единицы измерения:

  • NANOS
  • MICROS
  • MILLIS
  • SECONDS
  • MINUTES
  • HOURS
  • HALF_DAYS
  • DAYS
  • WEEKS
  • MONTHS
  • YEARS
  • DECADES
  • CENTURIES
  • MILLENNIA
  • ERAS
Все остальные ChronoUnit объекты вернут false.

Если единица измерения не является ChronoUnit, то результат этого метода получается путём вызова TemporalUnit.isSupportedBy(Temporal) с передачей this в качестве аргумента. Поддерживается ли единица измерения, определяется этой единицей.

Specified by:
isSupported in interface ChronoZonedDateTime<LocalDate>
Specified by:
isSupported in interface Temporal
Parameters:
unit - единица измерения для проверки, null возвращает false
Returns:
true, если единица может быть добавлена/вычтена, false, если нет

range

public ValueRange range(TemporalField field)
Получает диапазон допустимых значений для указанного поля.

Объект диапазона выражает минимальное и максимальное допустимые значения для поля. Эта дата-время используется для повышения точности возвращаемого диапазона. Если невозможно вернуть диапазон, потому что поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.

Если поле является ChronoField, то запрос реализуется здесь. Метод supported fields вернёт соответствующие объекты диапазона. Все остальные ChronoField объекты выбросят исключение UnsupportedTemporalTypeException.

Если поле не является ChronoField, то результат этого метода получается путём вызова TemporalField.rangeRefinedBy(TemporalAccessor) с передачей this в качестве аргумента. Возможно ли получить диапазон, определяется полем.

Specified by:
range in interface TemporalAccessor
Parameters:
field - поле для запроса диапазона, не null
Returns:
диапазон допустимых значений для поля, не null
Throws:
DateTimeException - если диапазон для поля получить невозможно
UnsupportedTemporalTypeException - если поле не поддерживается

get

public int get(TemporalField field)
Получает значение указанного поля из этой даты и времени как int.

Это запрос значения указанного поля в этой дате и времени. Возвращаемое значение всегда будет находиться в допустимом диапазоне значений для поля. Если невозможно вернуть значение, потому что поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.

Если поле является ChronoField, то запрос реализуется здесь. supported fields вернет допустимые значения на основе этой даты и времени, за исключением NANO_OF_DAY, MICRO_OF_DAY, EPOCH_DAY, PROLEPTIC_MONTH и INSTANT_SECONDS, которые слишком велики, чтобы поместиться в int и вызывают UnsupportedTemporalTypeException. Все другие ChronoField экземпляры вызовут UnsupportedTemporalTypeException.

Если поле не является ChronoField, то результат этого метода получается путем вызова TemporalField.getFrom(TemporalAccessor) с this в качестве аргумента. Возможность получения значения и то, что оно представляет, определяется полем.

Specified by:
get в интерфейсе TemporalAccessor
Parameters:
field - поле для получения, не null
Returns:
значение для поля
Throws:
DateTimeException - если значение для поля получить нельзя или значение находится за пределами допустимого диапазона значений для поля
UnsupportedTemporalTypeException - если поле не поддерживается или диапазон значений превышает int
ArithmeticException - если возникает переполнение числовых значений

getLong

public long getLong(TemporalField field)
Получает значение указанного поля из этой даты и времени как long.

Это запрос значения указанного поля в этой дате и времени. Если невозможно вернуть значение, потому что поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.

Если поле является ChronoField, то запрос реализуется здесь. supported fields вернет допустимые значения на основе этой даты и времени. Все другие ChronoField экземпляры вызовут UnsupportedTemporalTypeException.

Если поле не является ChronoField, то результат этого метода получается путем вызова TemporalField.getFrom(TemporalAccessor) с this в качестве аргумента. Возможность получения значения и то, что оно представляет, определяется полем.

Specified by:
getLong в интерфейсе ChronoZonedDateTime<LocalDate>
Specified by:
getLong в интерфейсе TemporalAccessor
Parameters:
field - поле для получения, не null
Returns:
значение для поля
Throws:
DateTimeException - если значение для поля получить нельзя
UnsupportedTemporalTypeException - если поле не поддерживается
ArithmeticException - если происходит переполнение числовых значений

getOffset

public ZoneOffset getOffset()
Получает смещение часового пояса, например, '+01:00'.

Это смещение локальной даты и времени от UTC/Гринвича.

Specified by:
getOffset в интерфейсе ChronoZonedDateTime<LocalDate>
Returns:
смещение часового пояса, не null

withEarlierOffsetAtOverlap

public ZonedDateTime withEarlierOffsetAtOverlap()
Возвращает копию этой даты и времени, изменяя смещение часового пояса на более раннее из двух допустимых смещений при перекрытии местного времени.

Этот метод имеет эффект только при перекрытии местного времени, например, при переходе на зимнее время. В этом случае для локальной даты и времени существуют два допустимых смещения. Вызов этого метода вернет зонированную дату и время с более ранним выбранным смещением.

Если этот метод вызывается, когда нет перекрытия, возвращается this.

Этот экземпляр неизменяем и не затрагивается этим вызовом метода.

Specified by:
withEarlierOffsetAtOverlap в интерфейсе ChronoZonedDateTime<LocalDate>
Returns:
зонированная дата и время на основе этой даты и времени с более ранним смещением, не null

withLaterOffsetAtOverlap

public ZonedDateTime withLaterOffsetAtOverlap()
Возвращает копию этой даты и времени, изменяя смещение часового пояса на более позднее из двух допустимых смещений при перекрытии местного времени.

Этот метод имеет эффект только при перекрытии местного времени, например, при переходе на зимнее время. В этом случае для локальной даты и времени существуют два допустимых смещения. Вызов этого метода вернет зонированную дату и время с более поздним выбранным смещением.

Если этот метод вызывается, когда нет перекрытия, возвращается this.

Этот экземпляр неизменяем и не затрагивается этим вызовом метода.

Specified by:
withLaterOffsetAtOverlap в интерфейсе ChronoZonedDateTime<LocalDate>
Returns:
зонированная дата и время на основе этой даты и времени с более поздним смещением, не null

getZone

public ZoneId getZone()
Получает часовой пояс, например, 'Europe/Paris'.

Это возвращает идентификатор часового пояса. Он идентифицирует часовой пояс rules, определяющий, когда и как меняется смещение от UTC/Гринвича.

Идентификатор часового пояса может совпадать с смещением. Если это так, то все будущие вычисления, такие как сложение или вычитание, не имеют сложных граничных случаев из-за правил часового пояса. См. также withFixedOffsetZone().

Specified by:
getZone в интерфейсе ChronoZonedDateTime<LocalDate>
Returns:
часовой пояс, не null

withZoneSameLocal

public ZonedDateTime withZoneSameLocal(ZoneId zone)
Возвращает копию этой даты и времени с другим часовым поясом, сохраняя локальную дату и время, если это возможно.

Этот метод изменяет часовой пояс и сохраняет локальную дату и время. Локальная дата и время изменяются только в том случае, если они недопустимы для нового часового пояса, определяемого с помощью того же подхода, что и ofLocal(LocalDateTime, ZoneId, ZoneOffset).

Чтобы изменить часовой пояс и скорректировать локальную дату и время, используйте withZoneSameInstant(ZoneId).

Этот экземпляр неизменяем и не затрагивается этим вызовом метода.

Specified by:
withZoneSameLocal в интерфейсе ChronoZonedDateTime<LocalDate>
Parameters:
zone - часовой пояс для изменения, не null
Returns:
зонированная дата и время на основе этой даты и времени с запрошенным часовым поясом, не null

withZoneSameInstant

public ZonedDateTime withZoneSameInstant(ZoneId zone)
Возвращает копию этой даты и времени с другим часовым поясом, сохраняя мгновение.

Этот метод изменяет часовой пояс и сохраняет мгновение. Это обычно приводит к изменению локальной даты и времени.

Этот метод основан на сохранении одного и того же мгновения, поэтому разрывы и перекрытия в локальной временной шкале не влияют на результат.

Чтобы изменить смещение, сохраняя локальное время, используйте withZoneSameLocal(ZoneId).

Specified by:
withZoneSameInstant в интерфейсе ChronoZonedDateTime<LocalDate>
Parameters:
zone - часовой пояс для изменения, не null
Returns:
зонированная дата и время на основе этой даты и времени с запрошенным часовым поясом, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон дат

withFixedOffsetZone

public ZonedDateTime withFixedOffsetZone()
Возвращает копию этой даты и времени с идентификатором часового пояса, установленным на смещение.

Это возвращает зонированную дату и время, где идентификатор часового пояса такой же, как getOffset(). Локальная дата, время, смещение и мгновение результата будут такими же, как в этой дате и времени.

Установка даты и времени на фиксированное единственное смещение означает, что все будущие вычисления, такие как сложение или вычитание, не имеют сложных граничных случаев из-за правил часового пояса. Это также может быть полезно при отправке зонированной даты и времени по сети, так как большинство протоколов, таких как ISO-8601, обрабатывают только смещения, а не идентификаторы часовых поясов на основе региона.

Это эквивалентно ZonedDateTime.of(zdt.toLocalDateTime(), zdt.getOffset()).

Returns:
зонированная дата и время с идентификатором часового пояса, установленным на смещение, не null

toLocalDateTime

public LocalDateTime toLocalDateTime()
Получает часть LocalDateTime этой даты и времени.

Это возвращает LocalDateTime с тем же годом, месяцем, днем и временем, что и в этой дате и времени.

Specified by:
toLocalDateTime в интерфейсе ChronoZonedDateTime<LocalDate>
Returns:
часть локальной даты и времени этой даты и времени, не null

toLocalDate

public LocalDate toLocalDate()
Получает часть LocalDate этой даты и времени.

Это возвращает LocalDate с тем же годом, месяцем и днем, что и в этой дате и времени.

Specified by:
toLocalDate в интерфейсе ChronoZonedDateTime<LocalDate>
Returns:
часть даты этой даты и времени, не null

getYear

public int getYear()
Получает поле года.

Этот метод возвращает примитивное значение int для года.

Год, возвращаемый этим методом, является пролептическим, согласно get(YEAR). Чтобы получить год эпохи, используйте get(YEAR_OF_ERA).

Returns:
год, от MIN_YEAR до MAX_YEAR

getMonthValue

public int getMonthValue()
Получает поле месяца от 1 до 12.

Этот метод возвращает месяц в виде int от 1 до 12. Код приложения часто становится более понятным, если использовать перечисление Month вызывая getMonth().

Возвращает:
месяц, от 1 до 12
См. также:
  • getMonth()

getMonth

public Month getMonth()
Получает поле месяца с использованием перечисления Month.

Этот метод возвращает перечисление Month для месяца. Это позволяет избежать неоднозначности, что int значения означают. Если вам нужен доступ к примитивному значению int, то перечисление предоставляет int value.

Возвращает:
месяц, не null
См. также:
  • getMonthValue()

getDayOfMonth

public int getDayOfMonth()
Получает поле дня месяца.

Этот метод возвращает примитивное int значение для дня месяца.

Возвращает:
день месяца, от 1 до 31

getDayOfYear

public int getDayOfYear()
Получает поле дня года.

Этот метод возвращает примитивное int значение для дня года.

Возвращает:
день года, от 1 до 365 или 366 в високосном году

getDayOfWeek

public DayOfWeek getDayOfWeek()
Получает поле дня недели, которое является перечислением DayOfWeek.

Этот метод возвращает перечисление DayOfWeek для дня недели. Это позволяет избежать неоднозначности, что int значения означают. Если вам нужен доступ к примитивному int значению, то перечисление предоставляет int value.

Дополнительная информация может быть получена из DayOfWeek. Включая текстовые названия значений.

Возвращает:
день недели, не null

toLocalTime

public LocalTime toLocalTime()
Получает LocalTime часть этого объекта даты и времени.

Этот метод возвращает LocalTime с тем же часом, минутой, секундой и наносекундой, что и этот объект даты и времени.

Указано в:
toLocalTime в интерфейсе ChronoZonedDateTime<LocalDate>
Возвращает:
часть времени этого объекта даты и времени, не null

getHour

public int getHour()
Получает поле часа дня.
Возвращает:
час дня, от 0 до 23

getMinute

public int getMinute()
Получает поле минуты.
Возвращает:
минута, от 0 до 59

getSecond

public int getSecond()
Получает поле секунды.
Возвращает:
секунда, от 0 до 59

getNano

public int getNano()
Получает поле наносекунд.
Возвращает:
наносекунда, от 0 до 999 999 999

with

public ZonedDateTime with(TemporalAdjuster adjuster)
Возвращает скопированную дату и время с произведённой корректировкой.

Этот метод возвращает скопированную копию объекта даты и времени, исходя из исходного, с произведённой корректировкой даты и времени. Корректировка происходит с помощью объекта стратегии корректировки. Прочитайте документацию корректировщика, чтобы понять, какая корректировка будет произведена.

Простой корректировщик может просто установить одно из полей, например, поле год. Более сложный корректировщик может установить дату на последнее число месяца. Выбор общих корректировок предоставляется в TemporalAdjusters. Они включают нахождение "последнего дня месяца" и "следующей среды". Основные классы даты и времени также реализуют интерфейс TemporalAdjuster, такие как Month и MonthDay. Корректировщик отвечает за обработку особых случаев, таких как различные длины месяцев и високосные годы.

Например, этот код возвращает дату на последнее число июля:

  import static java.time.Month.*;
  import static java.time.temporal.TemporalAdjusters.*;

  result = zonedDateTime.with(JULY).with(lastDayOfMonth());
 

Классы LocalDate и LocalTime реализуют TemporalAdjuster, поэтому этот метод может быть использован для изменения даты, времени или смещения:

  result = zonedDateTime.with(date);
  result = zonedDateTime.with(time);
 

ZoneOffset также реализует TemporalAdjuster, но его использование в качестве аргумента обычно не оказывает влияния. Смещение локального объекта даты и времени контролируется в первую очередь часовым поясом. Поэтому изменение смещения, как правило, не имеет смысла, потому что для локальной даты и времени и часового пояса существует только одно допустимое смещение. Если объект даты и времени с часовым поясом находится в перекрытии летнего времени, то смещение используется для переключения между двумя допустимыми смещениями. Во всех других случаях смещение игнорируется.

Результат этого метода получается путем вызова метода TemporalAdjuster.adjustInto(Temporal) указанного корректировщика, передавая this в качестве аргумента.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Указано в:
with в интерфейсе ChronoZonedDateTime<LocalDate>
Указано в:
with в интерфейсе Temporal
Параметры:
adjuster - корректировщик для использования, не null
Возвращает:
новый объект даты и времени, основанный на this с выполненной корректировкой, не null
Исключения:
DateTimeException - если корректировка не может быть выполнена
ArithmeticException - если произошел переполнение чисел

with

public ZonedDateTime with(TemporalField field, long newValue)
Возвращает копию этого объекта даты и времени с указанным полем, установленным в новое значение.

Этот метод возвращает скопированную копию объекта даты и времени, исходя из исходного, со значением для указанного поля, изменённого. Его можно использовать для изменения любого поддерживаемого поля, например, года, месяца или дня месяца. Если значение установить невозможно, поскольку поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.

В некоторых случаях изменение указанного поля может привести к тому, что результирующий объект даты и времени станет недопустимым, например, изменение месяца с 31 января на февраль сделает день месяца недопустимым. В таких случаях поле отвечает за разрешение даты. Обычно оно выберет предыдущую допустимую дату, например, последнее допустимое число февраля в этом примере.

Если поле является ChronoField, то корректировка выполняется здесь.

Поле INSTANT_SECONDS вернёт объект даты и времени с указанным мгновением. Часовой пояс и наносекунда останутся без изменений. Смещение результата будет получено из нового мгновения и исходного часового пояса. Если новое значение мгновения выходит за допустимый диапазон, то будет брошено исключение DateTimeException.

Поле OFFSET_SECONDS обычно игнорируется. Смещение локального объекта даты и времени контролируется в первую очередь часовым поясом. Поэтому изменение смещения, как правило, не имеет смысла, потому что для локальной даты и времени и часового пояса существует только одно допустимое смещение. Если объект даты и времени с часовым поясом находится в перекрытии летнего времени, то смещение используется для переключения между двумя допустимыми смещениями. Во всех других случаях смещение игнорируется. Если новое значение смещения выходит за допустимый диапазон, то будет брошено исключение DateTimeException.

Другие supported fields будут вести себя так же, как соответствующий метод в LocalDateTime. Часовой пояс не участвует в вычислениях и не будет изменён. При преобразовании обратно в ZonedDateTime, если локальная дата и время находятся в перекрытии, то смещение сохранится, если возможно, иначе будет использоваться более раннее смещение. Если в перерыве, локальная дата и время будет скорректирована вперёд на длину перерыва.

Все остальные экземпляры ChronoField выбросят исключение UnsupportedTemporalTypeException.

Если поле не является ChronoField, то результат этого метода получается путем вызова TemporalField.adjustInto(Temporal, long) с this в качестве аргумента. В этом случае поле определяет, следует ли и как корректировать мгновение.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Указано в:
with в интерфейсе ChronoZonedDateTime<LocalDate>
Указано в:
with в интерфейсе Temporal
Параметры:
field - поле для установки в результате, не null
newValue - новое значение поля в результате
Возвращает:
новый объект даты и времени, основанный на this с установленным указанным полем, не null
Исключения:
DateTimeException - если поле не может быть установлено
UnsupportedTemporalTypeException - если поле не поддерживается
ArithmeticException - если произошел переполнение чисел

с годом

public ZonedDateTime withYear(int year)
Возвращает копию этого ZonedDateTime с изменённым годом.

Операция выполняется на локальной временной шкале, changing the year локального времени. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальное время находится в перекрытии, то смещение будет сохранено, если это возможно, иначе будет использовано более раннее смещение. Если в разрыве, локальное время будет смещено вперёд на длину разрыва.

Этот экземпляр неизменяемый и не затрагивается этим вызовом метода.

Параметры:
year - год для установки в результате, от MIN_YEAR до MAX_YEAR
Возвращает:
a ZonedDateTime на основе этого времени с указанным годом, не null
Исключения:
DateTimeException - если значение года недопустимо

с месяцем

public ZonedDateTime withMonth(int month)
Возвращает копию этого ZonedDateTime с изменённым месяцем года.

Операция выполняется на локальной временной шкале, changing the month локального времени. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальное время находится в перекрытии, то смещение будет сохранено, если это возможно, иначе будет использовано более раннее смещение. Если в разрыве, локальное время будет смещено вперёд на длину разрыва.

Этот экземпляр неизменяемый и не затрагивается этим вызовом метода.

Параметры:
month - месяц года для установки в результате, от 1 (январь) до 12 (декабрь)
Возвращает:
a ZonedDateTime на основе этого времени с указанным месяцем, не null
Исключения:
DateTimeException - если значение месяца года недопустимо

с днём месяца

public ZonedDateTime withDayOfMonth(int dayOfMonth)
Возвращает копию этого ZonedDateTime с изменённым днём месяца.

Операция выполняется на локальной временной шкале, changing the day-of-month локального времени. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальное время находится в перекрытии, то смещение будет сохранено, если это возможно, иначе будет использовано более раннее смещение. Если в разрыве, локальное время будет смещено вперёд на длину разрыва.

Этот экземпляр неизменяемый и не затрагивается этим вызовом метода.

Параметры:
dayOfMonth - день месяца для установки в результате, от 1 до 28-31
Возвращает:
a ZonedDateTime на основе этого времени с указанным днём, не null
Исключения:
DateTimeException - если значение дня месяца недопустимо, или если день месяца недопустим для месяца-года

с днём года

public ZonedDateTime withDayOfYear(int dayOfYear)
Возвращает копию этого ZonedDateTime с изменённым днём года.

Операция выполняется на локальной временной шкале, changing the day-of-year локального времени. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальное время находится в перекрытии, то смещение будет сохранено, если это возможно, иначе будет использовано более раннее смещение. Если в разрыве, локальное время будет смещено вперёд на длину разрыва.

Этот экземпляр неизменяемый и не затрагивается этим вызовом метода.

Параметры:
dayOfYear - день года для установки в результате, от 1 до 365-366
Возвращает:
a ZonedDateTime на основе этого времени с указанным днём, не null
Исключения:
DateTimeException - если значение дня года недопустимо, или если день года недопустим для года

с часом

public ZonedDateTime withHour(int hour)
Возвращает копию этого ZonedDateTime с изменённым часом дня.

Операция выполняется на локальной временной шкале, изменение времени локального времени. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальное время находится в перекрытии, то смещение будет сохранено, если это возможно, иначе будет использовано более раннее смещение. Если в разрыве, локальное время будет смещено вперёд на длину разрыва.

Этот экземпляр неизменяемый и не затрагивается этим вызовом метода.

Параметры:
hour - час дня для установки в результате, от 0 до 23
Возвращает:
a ZonedDateTime на основе этого времени с указанным часом, не null
Исключения:
DateTimeException - если значение часа недопустимо

с минутой

public ZonedDateTime withMinute(int minute)
Возвращает копию этого ZonedDateTime с изменённой минутой часа.

Операция выполняется на локальной временной шкале, изменение времени локального времени. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальное время находится в перекрытии, то смещение будет сохранено, если это возможно, иначе будет использовано более раннее смещение. Если в разрыве, локальное время будет смещено вперёд на длину разрыва.

Этот экземпляр неизменяемый и не затрагивается этим вызовом метода.

Параметры:
minute - минута часа для установки в результате, от 0 до 59
Возвращает:
a ZonedDateTime на основе этого времени с указанной минутой, не null
Исключения:
DateTimeException - если значение минуты недопустимо

со секундой

public ZonedDateTime withSecond(int second)
Возвращает копию этого ZonedDateTime с изменённой секундой минуты.

Операция выполняется на локальной временной шкале, изменение времени локального времени. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальное время находится в перекрытии, то смещение будет сохранено, если это возможно, иначе будет использовано более раннее смещение. Если в разрыве, локальное время будет смещено вперёд на длину разрыва.

Этот экземпляр неизменяемый и не затрагивается этим вызовом метода.

Параметры:
second - секунда минуты для установки в результате, от 0 до 59
Возвращает:
a ZonedDateTime на основе этого времени с указанной секундой, не null
Исключения:
DateTimeException - если значение секунды недопустимо

с наносекундами

public ZonedDateTime withNano(int nanoOfSecond)
Возвращает копию этого ZonedDateTime с изменёнными наносекундами секунды.

Операция выполняется на локальной временной шкале, изменение времени локального времени. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальное время находится в перекрытии, то смещение будет сохранено, если это возможно, иначе будет использовано более раннее смещение. Если в разрыве, локальное время будет смещено вперёд на длину разрыва.

Этот экземпляр неизменяемый и не затрагивается этим вызовом метода.

Параметры:
nanoOfSecond - наносекунда секунды для установки в результат, от 0 до 999 999 999
Возвращает:
a ZonedDateTime на основе этого времени с указанными наносекундами, не null
Исключения:
DateTimeException - если значение наносекунд недопустимо

truncatedTo

public ZonedDateTime truncatedTo(TemporalUnit unit)
Возвращает копию этого ZonedDateTime с усечённым временем.

Усечение возвращает копию исходного времени с полями, меньшими, чем указанный элемент, установленные в ноль. Например, усечение с помощью minutes элемента установит поле секунды-минуты и наносекунды-секунды в ноль.

Элемент должен иметь длительность, которая делится на длину стандартного дня без остатка. Это включает все предоставленные единицы времени в ChronoUnit и DAYS. Другие единицы вызывают исключение.

Операция выполняется на локальной временной шкале, truncating базового локального времени. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальное время находится в перекрытии, то смещение будет сохранено, если это возможно, иначе будет использовано более раннее смещение. Если в разрыве, локальное время будет смещено вперёд на длину разрыва.

Этот экземпляр неизменяемый и не затрагивается этим вызовом метода.

Параметры:
unit - элемент для усечения, не null
Возвращает:
a ZonedDateTime на основе этого времени с усечённым временем, не null
Исключения:
DateTimeException - если невозможно усечь
UnsupportedTemporalTypeException - если элемент не поддерживается

plus

public ZonedDateTime plus(TemporalAmount amountToAdd)
Возвращает копию этого объекта DateTime, к которому добавлено указанное количество.

Это возвращает новый объект ZonedDateTime, основанный на этом, с добавлением указанного количества. Это количество обычно является Period или Duration, но может быть любого другого типа, реализующего интерфейс TemporalAmount.

Вычисление делегируется объекту количества, вызывая TemporalAmount.addTo(Temporal). Реализация количества свободна реализовать добавление любым способом, однако, обычно она вызывает plus(long, TemporalUnit). Обратитесь к документации реализации количества, чтобы определить, можно ли его успешно добавить.

Этот экземпляр неизменяем и не изменяется этим методом.

Specified by:
plus в интерфейсе ChronoZonedDateTime<LocalDate>
Specified by:
plus в интерфейсе Temporal
Parameters:
amountToAdd - количество для добавления, не null
Returns:
новый объект ZonedDateTime, основанный на этом DateTime с произведённым добавлением, не null
Throws:
DateTimeException - если добавление невозможно
ArithmeticException - если произошёл переполнение числового значения

plus

public ZonedDateTime plus(long amountToAdd, TemporalUnit unit)
Возвращает копию этого объекта DateTime, к которому добавлено указанное количество.

Это возвращает новый объект ZonedDateTime, основанный на этом, с добавлением количества в терминах единицы измерения. Если невозможно добавить количество, потому что единица измерения не поддерживается или по какой-либо другой причине, выбрасывается исключение.

Если поле является ChronoUnit, то добавление реализовано здесь. Зона не участвует в расчёте и останется неизменной в результате. Вычисление для единиц измерения даты и времени отличается.

Единицы измерения даты работают с локальным временным отрезком. Сначала период добавляется к локальному объекту DateTime, затем он преобразуется обратно в объект ZonedDateTime, используя идентификатор зоны. Преобразование использует ofLocal(LocalDateTime, ZoneId, ZoneOffset) с смещением перед добавлением.

Единицы измерения времени работают с временным отрезком момента. Сначала период добавляется к локальному объекту DateTime, затем он преобразуется обратно в объект ZonedDateTime, используя идентификатор зоны. Преобразование использует ofInstant(LocalDateTime, ZoneOffset, ZoneId) со смещением перед добавлением.

Если поле не является ChronoUnit, то результат этого метода получается путём вызова TemporalUnit.addTo(Temporal, long) , передавая this в качестве аргумента. В этом случае единица измерения определяет, как и нужно ли выполнять добавление.

Этот экземпляр неизменяем и не изменяется этим методом.

Specified by:
plus в интерфейсе ChronoZonedDateTime<LocalDate>
Specified by:
plus в интерфейсе Temporal
Parameters:
amountToAdd - количество единиц измерения для добавления к результату, может быть отрицательным
unit - единица измерения количества для добавления, не null
Returns:
новый объект ZonedDateTime, основанный на этом DateTime с добавленным указанным количеством, не null
Throws:
DateTimeException - если добавление невозможно
UnsupportedTemporalTypeException - если единица измерения не поддерживается
ArithmeticException - если произошёл переполнение числового значения

plusYears

public ZonedDateTime plusYears(long years)
Возвращает копию этого объекта ZonedDateTime с добавлением указанного количества лет.

Это действует на локальной временной шкале, adding years к локальному объекту DateTime. Это затем преобразуется обратно в объект ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальный объект DateTime находится в перекрытии, то смещение будет сохранено, если возможно, в противном случае будет использовано более раннее смещение. Если в зазоре, локальный объект DateTime будет скорректирован вперёд на длину зазора.

Этот экземпляр неизменяем и не изменяется этим методом.

Parameters:
years - количество лет для добавления, может быть отрицательным
Returns:
новый объект ZonedDateTime, основанный на этом DateTime с добавленными годами, не null
Throws:
DateTimeException - если результат выходит за пределы поддерживаемого диапазона дат

plusMonths

public ZonedDateTime plusMonths(long months)
Возвращает копию этого объекта ZonedDateTime с добавлением указанного количества месяцев.

Это действует на локальной временной шкале, adding months к локальному объекту DateTime. Это затем преобразуется обратно в объект ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальный объект DateTime находится в перекрытии, то смещение будет сохранено, если возможно, в противном случае будет использовано более раннее смещение. Если в зазоре, локальный объект DateTime будет скорректирован вперёд на длину зазора.

Этот экземпляр неизменяем и не изменяется этим методом.

Parameters:
months - количество месяцев для добавления, может быть отрицательным
Returns:
новый объект ZonedDateTime, основанный на этом DateTime с добавленными месяцами, не null
Throws:
DateTimeException - если результат выходит за пределы поддерживаемого диапазона дат

plusWeeks

public ZonedDateTime plusWeeks(long weeks)
Возвращает копию этого объекта ZonedDateTime с добавлением указанного количества недель.

Это действует на локальной временной шкале, adding weeks к локальному объекту DateTime. Это затем преобразуется обратно в объект ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальный объект DateTime находится в перекрытии, то смещение будет сохранено, если возможно, в противном случае будет использовано более раннее смещение. Если в зазоре, локальный объект DateTime будет скорректирован вперёд на длину зазора.

Этот экземпляр неизменяем и не изменяется этим методом.

Parameters:
weeks - количество недель для добавления, может быть отрицательным
Returns:
новый объект ZonedDateTime, основанный на этом DateTime с добавленными неделями, не null
Throws:
DateTimeException - если результат выходит за пределы поддерживаемого диапазона дат

plusDays

public ZonedDateTime plusDays(long days)
Возвращает копию этого объекта ZonedDateTime с добавлением указанного количества дней.

Это действует на локальной временной шкале, adding days к локальному объекту DateTime. Это затем преобразуется обратно в объект ZonedDateTime, используя идентификатор зоны для получения смещения.

При преобразовании обратно в ZonedDateTime, если локальный объект DateTime находится в перекрытии, то смещение будет сохранено, если возможно, в противном случае будет использовано более раннее смещение. Если в зазоре, локальный объект DateTime будет скорректирован вперёд на длину зазора.

Этот экземпляр неизменяем и не изменяется этим методом.

Parameters:
days - количество дней для добавления, может быть отрицательным
Returns:
новый объект ZonedDateTime, основанный на этом DateTime с добавленными днями, не null
Throws:
DateTimeException - если результат выходит за пределы поддерживаемого диапазона дат

plusHours

public ZonedDateTime plusHours(long hours)
Возвращает копию этого объекта ZonedDateTime с добавлением указанного количества часов.

Это действует на временной шкале момента, таким образом, добавление одного часа всегда будет на один час позже. Это может привести к изменению локального объекта DateTime на другое количество, отличное от одного часа. Обратите внимание, что это другой подход, чем тот, который используется днями, месяцами и годами, поэтому добавление одного дня не равно добавлению 24 часов.

Например, рассмотрим часовой пояс, такой как 'Europe/Paris', где осеннее переключение DST означает, что локальные моменты времени от 02:00 до 02:59 встречаются дважды, переходя от смещения +02:00 летом к +01:00 зимой.

  • Добавление одного часа к 01:30+02:00 даст 02:30+02:00 (оба в летнее время)
  • Добавление одного часа к 02:30+02:00 даст 02:30+01:00 (переход от летнего к зимнему времени)
  • Добавление одного часа к 02:30+01:00 даст 03:30+01:00 (оба в зимнее время)
  • Добавление трёх часов к 01:30+02:00 даст 03:30+01:00 (переход от летнего к зимнему времени)

Этот экземпляр неизменяем и не изменяется этим методом.

Parameters:
hours - количество часов для добавления, может быть отрицательным
Returns:
новый объект ZonedDateTime, основанный на этом DateTime с добавленными часами, не null
Throws:
DateTimeException - если результат выходит за пределы поддерживаемого диапазона дат

plusMinutes

public ZonedDateTime plusMinutes(long minutes)
Возвращает копию этого объекта ZonedDateTime с добавлением указанного количества минут.

Это действует на временной шкале момента, таким образом, добавление одной минуты всегда будет на одну минуту позже. Это может привести к изменению локального объекта DateTime на другое количество, отличное от одной минуты. Обратите внимание, что это другой подход, чем тот, который используется днями, месяцами и годами.

Этот экземпляр неизменяем и не изменяется этим методом.

Parameters:
minutes - количество минут для добавления, может быть отрицательным
Returns:
новый объект ZonedDateTime, основанный на этом DateTime с добавленными минутами, не null
Throws:
DateTimeException - если результат выходит за пределы поддерживаемого диапазона дат

plusSeconds

public ZonedDateTime plusSeconds(long seconds)
Возвращает копию этого ZonedDateTime с добавлением указанного количества секунд.

Эта операция выполняется на временной шкале момента, так что добавление одной секунды всегда будет длительностью в одну секунду позже. Это может привести к изменению местного времени на величину, отличную от одной секунды. Обратите внимание, что это отличается от подхода, используемого для дней, месяцев и лет.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
seconds - секунды для добавления, может быть отрицательным
Returns:
a ZonedDateTime на основе этой даты и времени с добавленными секундами, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон дат

plusNanos

public ZonedDateTime plusNanos(long nanos)
Возвращает копию этого ZonedDateTime с добавлением указанного количества наносекунд.

Эта операция выполняется на временной шкале момента, так что добавление одной наносекунды всегда будет длительностью в одну наносекунду позже. Это может привести к изменению местного времени на величину, отличную от одной наносекунды. Обратите внимание, что это отличается от подхода, используемого для дней, месяцев и лет.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
nanos - наносекунды для добавления, может быть отрицательным
Returns:
a ZonedDateTime на основе этой даты и времени с добавленными наносекундами, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон дат

minus

public ZonedDateTime minus(TemporalAmount amountToSubtract)
Возвращает копию этого объекта DateTime с указанной величиной, вычтенной.

Это возвращает ZonedDateTime, на основе этого, с указанным количеством, вычтенным. Величина обычно является Period или Duration, но может быть любого другого типа, реализующего интерфейс TemporalAmount.

Вычисление делегируется объекту величины вызовом TemporalAmount.subtractFrom(Temporal). Реализация величины свободна реализовывать вычитание любым способом, однако она обычно обращается к minus(long, TemporalUnit). Обратитесь к документации реализации величины, чтобы определить, можно ли успешно вычесть ее.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Specified by:
minus в интерфейсе ChronoZonedDateTime<LocalDate>
Specified by:
minus в интерфейсе Temporal
Parameters:
amountToSubtract - величина для вычитания, не null
Returns:
a ZonedDateTime на основе этой даты и времени с произведенным вычитанием, не null
Throws:
DateTimeException - если вычитание невозможно
ArithmeticException - если происходит переполнение числовых значений

minus

public ZonedDateTime minus(long amountToSubtract, TemporalUnit unit)
Возвращает копию этого объекта DateTime с указанной величиной, вычтенной.

Это возвращает ZonedDateTime, на основе этого, с количеством в терминах единицы вычтенным. Если вычитание невозможно, потому что единица не поддерживается или по какой-либо другой причине, выбрасывается исключение.

Вычисление для единиц даты и времени отличается.

Единицы дат работают на локальной временной шкале. Сначала из локального времени и даты вычитается период, затем он преобразуется обратно в дату-время с временной зоной, используя идентификатор временной зоны. Преобразование использует ofLocal(LocalDateTime, ZoneId, ZoneOffset) с офсетом до вычитания.

Единицы времени работают на временной шкале мгновения. Сначала из локального времени и даты вычитается период, затем он преобразуется обратно в дату-время с временной зоной, используя идентификатор временной зоны. Преобразование использует ofInstant(LocalDateTime, ZoneOffset, ZoneId) с офсетом до вычитания.

Этот метод эквивалентен plus(long, TemporalUnit) с отрицательным значением величины. См. этот метод для полного описания того, как работает добавление, и, следовательно, вычитание.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Specified by:
minus в интерфейсе ChronoZonedDateTime<LocalDate>
Specified by:
minus в интерфейсе Temporal
Parameters:
amountToSubtract - количество единицы для вычитания из результата, может быть отрицательным
unit - единица величины для вычитания, не null
Returns:
a ZonedDateTime на основе этой даты и времени с указанным количеством вычтенным, не null
Throws:
DateTimeException - если вычитание невозможно
UnsupportedTemporalTypeException - если единица не поддерживается
ArithmeticException - если происходит переполнение числовых значений

minusYears

public ZonedDateTime minusYears(long years)
Возвращает копию этого ZonedDateTime с указанным количеством лет, вычтенным.

Эта операция выполняется на локальной временной шкале, subtracting years для локального времени и даты. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор временной зоны для получения офсета.

При преобразовании обратно в ZonedDateTime, если локальное время и дата находятся в перекрытии, то офсет сохраняется, если возможно, в противном случае используется более ранний офсет. Если в разрыве, локальное время и дата будут скорректированы вперед на длину разрыва.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
years - годы для вычитания, может быть отрицательным
Returns:
a ZonedDateTime на основе этой даты и времени с вычтенными годами, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон дат

minusMonths

public ZonedDateTime minusMonths(long months)
Возвращает копию этого ZonedDateTime с указанным количеством месяцев, вычтенным.

Эта операция выполняется на локальной временной шкале, subtracting months для локального времени и даты. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор временной зоны для получения офсета.

При преобразовании обратно в ZonedDateTime, если локальное время и дата находятся в перекрытии, то офсет сохраняется, если возможно, в противном случае используется более ранний офсет. Если в разрыве, локальное время и дата будут скорректированы вперед на длину разрыва.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
months - месяцы для вычитания, может быть отрицательным
Returns:
a ZonedDateTime на основе этой даты и времени с вычтенными месяцами, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон дат

minusWeeks

public ZonedDateTime minusWeeks(long weeks)
Возвращает копию этого ZonedDateTime с указанным количеством недель, вычтенным.

Эта операция выполняется на локальной временной шкале, subtracting weeks для локального времени и даты. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор временной зоны для получения офсета.

При преобразовании обратно в ZonedDateTime, если локальное время и дата находятся в перекрытии, то офсет сохраняется, если возможно, в противном случае используется более ранний офсет. Если в разрыве, локальное время и дата будут скорректированы вперед на длину разрыва.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
weeks - недели для вычитания, может быть отрицательным
Returns:
a ZonedDateTime на основе этой даты и времени с вычтенными неделями, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон дат

minusDays

public ZonedDateTime minusDays(long days)
Возвращает копию этого ZonedDateTime с указанным количеством дней, вычтенным.

Эта операция выполняется на локальной временной шкале, subtracting days для локального времени и даты. Затем это преобразуется обратно в ZonedDateTime, используя идентификатор временной зоны для получения офсета.

При преобразовании обратно в ZonedDateTime, если локальное время и дата находятся в перекрытии, то офсет сохраняется, если возможно, в противном случае используется более ранний офсет. Если в разрыве, локальное время и дата будут скорректированы вперед на длину разрыва.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
days - дни для вычитания, может быть отрицательным
Returns:
a ZonedDateTime на основе этой даты и времени с вычтенными днями, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон дат

minusHours

public ZonedDateTime minusHours(long hours)
Возвращает копию этого ZonedDateTime с указанным количеством часов, вычтенных.

Данный метод работает на временной шкале мгновенных моментов времени, так что вычитание одного часа всегда будет представлять собой интервал времени на один час ранее. Это может привести к изменению локальной даты и времени на величину, отличную от одного часа. Обратите внимание, что этот подход отличается от подхода, используемого для дней, месяцев и лет, поэтому вычитание одного дня не эквивалентно добавлению 24 часов.

Например, рассмотрим часовой пояс, такой как 'Europe/Paris', где переход на зимнее время DST означает, что локальные времена с 02:00 до 02:59 встречаются дважды, при переходе со смещения +02:00 летом к +01:00 зимой.

  • Вычитание одного часа из 03:30+01:00 даст 02:30+01:00 (оба значения в зимнем времени)
  • Вычитание одного часа из 02:30+01:00 даст 02:30+02:00 (переход от зимнего к летнему времени)
  • Вычитание одного часа из 02:30+02:00 даст 01:30+02:00 (оба значения в летнем времени)
  • Вычитание трёх часов из 03:30+01:00 даст 01:30+02:00 (переход от зимнего к летнему времени)

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
hours - количество часов для вычитания, может быть отрицательным
Returns:
объект ZonedDateTime на основе этой даты и времени с вычтенными часами, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон дат

minusMinutes

public ZonedDateTime minusMinutes(long minutes)
Возвращает копию этого ZonedDateTime с указанным количеством минут, вычтенных.

Данный метод работает на временной шкале мгновенных моментов времени, так что вычитание одной минуты всегда будет представлять собой интервал времени на одну минуту ранее. Это может привести к изменению локальной даты и времени на величину, отличную от одной минуты. Обратите внимание, что этот подход отличается от подхода, используемого для дней, месяцев и лет.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
minutes - количество минут для вычитания, может быть отрицательным
Returns:
объект ZonedDateTime на основе этой даты и времени с вычтенными минутами, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон дат

minusSeconds

public ZonedDateTime minusSeconds(long seconds)
Возвращает копию этого ZonedDateTime с указанным количеством секунд, вычтенных.

Данный метод работает на временной шкале мгновенных моментов времени, так что вычитание одной секунды всегда будет представлять собой интервал времени на одну секунду ранее. Это может привести к изменению локальной даты и времени на величину, отличную от одной секунды. Обратите внимание, что этот подход отличается от подхода, используемого для дней, месяцев и лет.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
seconds - количество секунд для вычитания, может быть отрицательным
Returns:
объект ZonedDateTime на основе этой даты и времени с вычтенными секундами, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон дат

minusNanos

public ZonedDateTime minusNanos(long nanos)
Возвращает копию этого ZonedDateTime с указанным количеством наносекунд, вычтенных.

Данный метод работает на временной шкале мгновенных моментов времени, так что вычитание одной наносекунды всегда будет представлять собой интервал времени на одну наносекунду ранее. Это может привести к изменению локальной даты и времени на величину, отличную от одной наносекунды. Обратите внимание, что этот подход отличается от подхода, используемого для дней, месяцев и лет.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
nanos - количество наносекунд для вычитания, может быть отрицательным
Returns:
объект ZonedDateTime на основе этой даты и времени с вычтенными наносекундами, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон дат

query

public <R> R query(TemporalQuery<R> query)
Запрашивает это время и дату, используя указанный запрос.

Данный метод запрашивает это время и дату, используя указанный объект стратегии запроса. Объект TemporalQuery определяет логику, используемую для получения результата. Прочитайте документацию запроса, чтобы понять, каким будет результат этого метода.

Результат этого метода получается путем вызова метода TemporalQuery.queryFrom(TemporalAccessor) на указанном запросе, передавая this в качестве аргумента.

Specified by:
query в интерфейсе ChronoZonedDateTime<LocalDate>
Specified by:
query в интерфейсе TemporalAccessor
Type Parameters:
R - тип результата
Parameters:
query - запрос для вызова, не null
Returns:
результат запроса, может быть null (определяется запросом)
Throws:
DateTimeException - если запрос не удается выполнить (определяется запросом)
ArithmeticException - если происходит переполнение числового значения (определяется запросом)

until

public long until(Temporal endExclusive, TemporalUnit unit)
Вычисляет время до другой даты и времени в терминах указанной единицы измерения.

Данный метод вычисляет интервал времени между двумя объектами ZonedDateTime в терминах одной TemporalUnit. Начальная и конечная точки — это this и указанное время и дата. Результат будет отрицательным, если конечная точка находится до начальной. Например, количество дней между двумя датами и временем можно вычислить, используя startDateTime.until(endDateTime, DAYS).

Temporal , переданный в этот метод, преобразуется в ZonedDateTime с помощью from(TemporalAccessor). Если часовой пояс отличается между двумя зонированными датами и временем, указанная конечная дата и время нормализуются таким образом, чтобы иметь тот же часовой пояс, что и эта дата и время.

Вычисление возвращает целое число, представляющее количество полных единиц между двумя датами и временем. Например, количество месяцев между 2012-06-15T00:00Z и 2012-08-14T23:59Z будет только один месяц, так как это на одну минуту меньше двух месяцев.

Есть два равнозначных способа использования этого метода. Первый — вызвать этот метод. Второй — использовать TemporalUnit.between(Temporal, Temporal):

   // these two lines are equivalent
   amount = start.until(end, MONTHS);
   amount = MONTHS.between(start, end);
 
Выбор должен быть сделан на основе того, что делает код более читабельным.

Вычисление реализовано в этом методе для ChronoUnit. Поддерживаются единицы NANOS, MICROS, MILLIS, SECONDS, MINUTES, HOURS и HALF_DAYS, DAYS, WEEKS, MONTHS, YEARS, DECADES, CENTURIES, MILLENNIA и ERAS. Другие значения ChronoUnit приведут к исключению.

Вычисление для единиц даты и времени отличается.

Единицы даты работают на локальной временной шкале, используя локальное время и дату. Например, период с полудня первого дня до полудня следующего дня в днях всегда будет считаться ровно одним днём, независимо от того, был ли переход на летнее или зимнее время.

Единицы времени работают на временной шкале мгновенных моментов времени. Вычисление фактически преобразует оба зонированных времени и даты в моменты времени и затем вычисляет период между моментами времени. Например, период с полудня первого дня до полудня следующего дня в часах может быть 23, 24 или 25 часами (или другой величиной) в зависимости от того, был ли переход на летнее или зимнее время.

Если единица не является ChronoUnit, то результат этого метода получается путем вызова TemporalUnit.between(Temporal, Temporal) , передавая this в качестве первого аргумента и преобразованный временной аргумент как второй аргумент.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Specified by:
until в интерфейсе Temporal
Parameters:
endExclusive - конечная дата, исключая, которая преобразуется в ZonedDateTime, не null
unit - единица измерения, не null
Returns:
количество времени между этой датой и временем и конечной датой и временем
Throws:
DateTimeException - если интервал времени не может быть вычислен, или конечный временной объект не может быть преобразован в ZonedDateTime
UnsupportedTemporalTypeException - если единица не поддерживается
ArithmeticException - если происходит переполнение числового значения

format

public String format(DateTimeFormatter formatter)
Форматирует это время и дату, используя указанный форматтер.

Это время и дата будут переданы формату, чтобы получить строку.

Specified by:
format в интерфейсе ChronoZonedDateTime<LocalDate>
Parameters:
formatter - используемый форматтер, не null
Returns:
строка отформатированной даты и времени, не null
Throws:
DateTimeException - если произошла ошибка при печати

toOffsetDateTime

public OffsetDateTime toOffsetDateTime()
Преобразует это время и дату в OffsetDateTime.

Данный метод создаёт объект смещенного времени и даты, используя локальную дату и время, и смещение. Идентификатор часового пояса игнорируется.

Returns:
объект смещенного времени и даты, представляющий то же локальное время и дату и смещение, не null

equals

public boolean equals(Object obj)
Проверяет, равно ли это время и дата другому времени и дате.

Сравнение основано на смещенном времени и дате и часовом поясе. Сравниваются только объекты типа ZonedDateTime, другие типы возвращают false.

Specified by:
equals в интерфейсе ChronoZonedDateTime<LocalDate>
Overrides:
equals в классе Object
Parameters:
obj - объект для проверки, null возвращает false
Returns:
true, если это равно другому времени и дате
See Also:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Хеш-код для этой даты и времени.
Указано в:
hashCode в интерфейсе ChronoZonedDateTime<LocalDate>
Переопределяет:
hashCode в классе Object
Возвращает:
подходящий хеш-код
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

toString

public String toString()
Выводит это время и дату как String, например 2007-12-03T10:15:30+01:00[Europe/Paris].

Формат состоит из LocalDateTime, за которым следует ZoneOffset. Если ZoneId отличается от смещения, то выводится идентификатор. Вывод совместим с ISO-8601, если смещение и идентификатор совпадают, а секунды в смещении равны нулю.

Указано в:
toString в интерфейсе ChronoZonedDateTime<LocalDate>
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого времени и даты, не 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/ZonedDateTime.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API