Spec-Zone.ru › OpenJDK 17

Класс 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. Получение смещения для мгновенного момента времени просто, так как для каждого мгновенного момента времени существует ровно одно допустимое смещение. В отличие от этого, получение смещения для локальной даты и времени не так просто. Существует три случая:

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

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

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

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

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

Это класс на основе значений; программисты должны рассматривать экземпляры, которые равны, как взаимозаменяемые и не должны использовать экземпляры для синхронизации, иначе могут возникнуть непредсказуемые последствия. Например, в будущих версиях синхронизация может потерпеть неудачу. Для сравнения следует использовать метод 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, строго проверяя сочетание локальной даты и времени, смещения и идентификатора зоны.

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

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

from

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

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

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

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

Parameters:
temporal - временной объект для преобразования, не null
Returns:
объект даты и времени с учётом зоны, не null
Throws:
DateTimeException - если невозможно преобразовать во временную точку ZonedDateTime
See Also:
  • Chronology.zonedDateTime(TemporalAccessor)

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:
распарсованный объект даты и времени с учётом зоны, не null
Throws:
DateTimeParseException - если текст не может быть распарсен

parse

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

Текст парсится с использованием форматера, возвращая объект даты и времени.

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

isSupported

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

Проверяет, может ли быть запрошено указанное поле для этой даты и времени. Если ложь, то вызов методов 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)
Проверяет, поддерживается ли указанный интервал.

Проверяет, можно ли добавить или вычесть указанный интервал из этой даты и времени. Если ложь, то вызов методов 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 в качестве аргумента. Возможность получения значения и то, что оно представляет, определяется полем.

Указано в:
get в интерфейсе TemporalAccessor
Параметры:
field - поле для получения, не null
Возвращает:
значение поля
Исключения:
DateTimeException - если значение для поля получить нельзя или оно находится вне допустимого диапазона для поля
UnsupportedTemporalTypeException - если поле не поддерживается или диапазон значений превышает int
ArithmeticException - если происходит переполнение числовых значений

getLong

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

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

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

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

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

getOffset

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

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

Указано в:
getOffset в интерфейсе ChronoZonedDateTime<LocalDate>
Возвращает:
смещение часового пояса, не null

withEarlierOffsetAtOverlap

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

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

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

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

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

withLaterOffsetAtOverlap

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

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

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

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

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

getZone

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

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

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

Указано в:
getZone в интерфейсе ChronoZonedDateTime<LocalDate>
Возвращает:
часовой пояс, не null

withZoneSameLocal

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

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

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

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

Указано в:
withZoneSameLocal в интерфейсе ChronoZonedDateTime<LocalDate>
Параметры:
zone - часовой пояс для изменения, не null
Возвращает:
объект ZonedDateTime на основе этой даты и времени с запрошенным часовым поясом, не null

withZoneSameInstant

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

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

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

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

Указано в:
withZoneSameInstant в интерфейсе ChronoZonedDateTime<LocalDate>
Параметры:
zone - часовой пояс для изменения, не null
Возвращает:
объект ZonedDateTime на основе этой даты и времени с запрошенным часовым поясом, не null
Исключения:
DateTimeException - если результат выходит за поддерживаемый диапазон дат

withFixedOffsetZone

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

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

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

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

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

toLocalDateTime

public LocalDateTime toLocalDateTime()
Возвращает часть LocalDateTime этой даты и времени.

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

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

toLocalDate

public LocalDate toLocalDate()
Возвращает часть LocalDate этой даты и времени.

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

Указано в:
toLocalDate в интерфейсе ChronoZonedDateTime<LocalDate>
Возвращает:
дата этой даты и времени, не null

getYear

public int getYear()
Возвращает поле год.

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

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

Возвращает:
год, от 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)
Возвращает скопированное значение этого объекта даты и времени с внесенными изменениями.

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

Простой корректировщик может просто установить одно из полей, например, год. Более сложный корректировщик может установить дату на последнее число месяца. Выбор общих корректировок представлен в 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, однако использование его в качестве аргумента обычно не имеет эффекта. Смещение ZonedDateTime контролируется в первую очередь часовым поясом. Поэтому изменение смещения обычно не имеет смысла, так как существует только одно допустимое смещение для локального значения даты и времени и часового пояса. Если объект даты и времени с часовым поясом находится в перекрытии летнего времени, то смещение используется для переключения между двумя допустимыми смещениями. Во всех остальных случаях смещение игнорируется.

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

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

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

with

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

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

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

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

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

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

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

Все другие ChronoField экземпляры будут вызывать UnsupportedTemporalTypeException.

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

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

Указано в:
with в интерфейсе ChronoZonedDateTime<LocalDate>
Указано в:
with в интерфейсе Temporal
Параметры:
field - поле для установки в результате, не null
newValue - новое значение поля в результате
Возвращает:
объект ZonedDateTime на основе 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)
Возвращает копию этой даты и времени с добавленным указанным значением.

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

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

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

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

plus

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

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

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

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

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

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

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

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

plusYears

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

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

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

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

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

plusMonths

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

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

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

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

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

plusWeeks

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

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

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

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

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

plusDays

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

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

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

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

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

plusHours

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

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

Например, рассмотрим часовой пояс, такой как 'Europe/Paris', где переход на летнее время означает, что местные времена с 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:
дата и время, основанные на этой дате и времени с добавленными часами, не null
Throws:
DateTimeException - если результат превышает поддерживаемый диапазон дат

plusMinutes

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

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

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

Parameters:
minutes - количество минут для добавления, может быть отрицательным
Returns:
дата и время, основанные на этой дате и времени с добавленными минутами, не 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)
Возвращает копию этой даты и времени с вычетом указанного количества.

Это возвращает 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)
Возвращает копию этой даты и времени с вычетом указанного количества.

Это возвращает 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', где смена летнего времени на осеннее означает, что местные времена с 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:
a ZonedDateTime на основе этой даты и времени с вычтенными часами, не null
Throws:
DateTimeException - если результат превышает поддерживаемый диапазон дат

minusMinutes

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

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

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

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

minusSeconds

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

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

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

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

minusNanos

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

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

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

Parameters:
nanos - наносекунды для вычитания, могут быть отрицательными
Returns:
a 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, 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/ZonedDateTime.html

Spec-Zone.ru

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