Класс ZoneRules

Все реализованные интерфейсы:
Serializable
public final class ZoneRules
extends Object
implements Serializable

Правила, определяющие, как смещение зоны времени изменяется для одной зоны времени.

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

Правила загружаются через ZoneRulesProvider с использованием ZoneId. Те же правила могут быть совместно использованы внутри нескольких идентификаторов зон.

Сериализация экземпляра ZoneRules будет сохранять весь набор правил. Она не сохраняет идентификатор зоны, так как он не является частью состояния этого объекта.

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

Требования к реализации:
Этот класс неизменяем и потокобезопасен.
С:
1.8
См. также:
Сериализованная форма

Методы

Модификатор и тип Метод Описание
boolean equals​(Object otherRules)

Проверяет, равны ли этот набор правил другому.

Duration getDaylightSavings​(Instant instant)

Получает количество летнего времени, используемое для указанного момента во времени в этой зоне.

ZoneOffset getOffset​(Instant instant)

Получает смещение, применимое в указанный момент времени в этих правилах.

ZoneOffset getOffset​(LocalDateTime localDateTime)

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

ZoneOffset getStandardOffset​(Instant instant)

Получает стандартное смещение для указанного момента во времени в этой зоне.

ZoneOffsetTransition getTransition​(LocalDateTime localDateTime)

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

List<ZoneOffsetTransitionRule> getTransitionRules()

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

List<ZoneOffsetTransition> getTransitions()

Получает полный список полностью определенных переходов.

List<ZoneOffset> getValidOffsets​(LocalDateTime localDateTime)

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

int hashCode()

Возвращает подходящий хэш-код, учитывая определение #equals.

boolean isDaylightSavings​(Instant instant)

Проверяет, находится ли указанный момент во времени в летнее время.

boolean isFixedOffset()

Проверяет, являются ли правила зоны фиксированными, так что смещение никогда не изменяется.

boolean isValidOffset​(LocalDateTime localDateTime, ZoneOffset offset)

Проверяет, является ли дата и время смещения допустимыми для этих правил.

ZoneOffsetTransition nextTransition​(Instant instant)

Получает следующий переход после указанного момента во времени.

static ZoneRules of​(ZoneOffset offset)

Получает экземпляр ZoneRules, у которого фиксированы правила зоны.

static ZoneRules of​(ZoneOffset baseStandardOffset, ZoneOffset baseWallOffset, List<ZoneOffsetTransition> standardOffsetTransitionList, List<ZoneOffsetTransition> transitionList, List<ZoneOffsetTransitionRule> lastRules)

Получает экземпляр ZoneRules.

ZoneOffsetTransition previousTransition​(Instant instant)

Получает предыдущий переход до указанного момента времени.

String toString()

Возвращает строку, описывающую этот объект.

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

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

Методы

of

public static ZoneRules of(ZoneOffset baseStandardOffset,
                           ZoneOffset baseWallOffset,
                           List<ZoneOffsetTransition> standardOffsetTransitionList,
                           List<ZoneOffsetTransition> transitionList,
                           List<ZoneOffsetTransitionRule> lastRules)

Получение экземпляра ZoneRules.

Параметры:
baseStandardOffset - стандартное смещение, используемое до введения правовых правил, не null
baseWallOffset - смещение относительно часового пояса, используемое до введения правовых правил, не null
standardOffsetTransitionList - список изменений стандартного смещения, не null
transitionList - список переходов, не null
lastRules - повторяющиеся последние правила, размер 16 или меньше, не null
Возвращает:
правила часового пояса, не null

of

public static ZoneRules of(ZoneOffset offset)

Получение экземпляра ZoneRules с фиксированными правилами часового пояса.

Параметры:
offset - смещение, на котором основаны фиксированные правила часового пояса, не null
Возвращает:
правила часового пояса, не null
См. также:
isFixedOffset()

isFixedOffset

public boolean isFixedOffset()

Проверка, являются ли правила часового пояса фиксированными, то есть смещение никогда не меняется.

Возвращает:
true, если часовой пояс фиксированный и смещение никогда не меняется

getOffset

public ZoneOffset getOffset(Instant instant)

Получение смещения, применимого в указанный момент времени в соответствии с этими правилами.

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

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

getOffset

public ZoneOffset getOffset(LocalDateTime localDateTime)

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

Сопоставление локальной даты и времени и смещения не является простым. Существует три случая:

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

Поскольку в случае пропуска и перекрытия возвращаемое смещение является «лучшим» значением, а не «правильным» значением, с ним следует обращаться осторожно. Приложения, которые заботятся о правильном смещении, должны использовать комбинацию этого метода, getValidOffsets(LocalDateTime) и getTransition(LocalDateTime).

Параметры:
localDateTime - локальная дата и время для запроса, не null, но null может быть проигнорирован, если правила имеют одно смещение для всех моментов времени
Возвращает:
наиболее подходящее смещение для локальной даты и времени, не null

getValidOffsets

public List<ZoneOffset> getValidOffsets(LocalDateTime localDateTime)

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

Сопоставление локальной даты и времени и смещения не является простым. Существует три случая:

  • Нормальный случай, с одним допустимым смещением. В подавляющем большинстве случаев применяется нормальный случай, где для локальной даты и времени существует единственное допустимое смещение.
  • Пропуск, с нулевыми допустимыми смещениями. Это происходит, когда часы переходят вперёд, обычно из-за весеннего перехода на летнее время. В пропуске есть значения локальной даты и времени без допустимого смещения.
  • Перекрытие, с двумя допустимыми смещениями. Это происходит, когда часы переводятся назад, обычно из-за осеннего перехода на зимнее время. В перекрытии есть значения локальной даты и времени с двумя допустимыми смещениями.
Таким образом, для любой данной локальной даты и времени может быть ноль, одно или два допустимых смещения. Этот метод возвращает этот список допустимых смещений, который имеет размер 0, 1 или 2. В случае двух смещений, более раннее смещение возвращается с индексом 0, а более позднее — с индексом 1.

Существует несколько способов обработки преобразования из LocalDateTime. Один из методов, используя этот метод, был бы:

List<ZoneOffset> validOffsets = rules.getOffset(localDT);
  if (validOffsets.size() == 1) {
    // Normal case: only one valid offset
    zoneOffset = validOffsets.get(0);
  } else {
    // Gap or Overlap: determine what to do from transition (which will be non-null)
    ZoneOffsetTransition trans = rules.getTransition(localDT);
  }

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

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

getTransition

public ZoneOffsetTransition getTransition(LocalDateTime localDateTime)

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

Сопоставление локальной даты и времени и смещения не является простым. Существует три случая:

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

Существует несколько способов обработки преобразования из LocalDateTime. Один из методов, используя этот метод, был бы:

ZoneOffsetTransition trans = rules.getTransition(localDT);
  if (trans != null) {
    // Gap or Overlap: determine what to do from transition
  } else {
    // Normal case: only one valid offset
    zoneOffset = rule.getOffset(localDT);
  }
Параметры:
localDateTime - локальная дата и время для запроса перехода смещения, не null, но null может быть проигнорирован, если правила имеют одно смещение для всех моментов времени
Возвращает:
переход смещения, null, если локальная дата и время не находятся в переходе

getStandardOffset

public ZoneOffset getStandardOffset(Instant instant)

Получение стандартного смещения для указанного момента времени в данном часовом поясе.

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

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

getDaylightSavings

public Duration getDaylightSavings(Instant instant)

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

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

Это реализация по умолчанию рассчитывает продолжительность от actual и standard смещений.

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

isDaylightSavings

public boolean isDaylightSavings(Instant instant)

Проверка, соответствует ли указанный момент времени летнему времени.

Проверяет, совпадают ли стандартное смещение и фактическое смещение для указанного момента времени. Если они не совпадают, предполагается, что летнее время активно.

Это реализация по умолчанию сравнивает actual и standard смещения.

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

isValidOffset

public boolean isValidOffset(LocalDateTime localDateTime,
                             ZoneOffset offset)

Проверка, является ли смещение даты и времени допустимым для этих правил.

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

Эта реализация по умолчанию проверяет, содержит ли getValidOffsets(java.time.LocalDateTime) указанное смещение.

Параметры:
localDateTime - дата и время для проверки, не null, но null может быть проигнорирован, если правила имеют одно смещение для всех моментов времени
offset - смещение для проверки, null возвращает false
Возвращает:
true, если смещение даты и времени допустимо для этих правил

nextTransition

public ZoneOffsetTransition nextTransition(Instant instant)

Получение следующего перехода после указанного момента времени.

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

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

previousTransition

public ZoneOffsetTransition previousTransition(Instant instant)

Получение предыдущего перехода перед указанным моментом времени.

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

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

getTransitions

public List<ZoneOffsetTransition> getTransitions()

Получает полный список полностью определённых смен.

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

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

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

getTransitionRules

public List<ZoneOffsetTransitionRule> getTransitionRules()

Получает список правил перехода для лет, которые находятся за пределами тех, что определены в списке переходов.

Полный набор смен для этого экземпляра правил определяется этим методом и getTransitions(). Этот метод возвращает экземпляры ZoneOffsetTransitionRule, которые определяют алгоритм того, когда произойдут смены.

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

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

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

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

equals

public boolean equals(Object otherRules)

Проверяет, равен ли этот набор правил другому набору.

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

Это определение должно привести к тому, что реализации будут сравнивать всё своё состояние.

Переопределяет:
equals в классе Object
Параметры:
otherRules — другие правила, null возвращает false
Возвращает:
true, если эти правила одинаковы
См. также:
Object.hashCode(), HashMap

hashCode

public int hashCode()

Возвращает подходящий хэш-код, учитывая определение #equals.

Переопределяет:
hashCode в классе Object
Возвращает:
хэш-код
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

toString

public String toString()

Возвращает строку, описывающую этот объект.

Переопределяет:
toString в классе Object
Возвращает:
строку для отладки, не null

© 1993, 2020, 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/11/docs/api/java.base/java/time/zone/ZoneRules.html

Spec-Zone .ru
спецификации, руководства, описания, API