Spec-Zone.ru › OpenJDK 24

Класс ZoneRules

java.lang.Object
java.time.zone.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.getValidOffsets(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 может быть проигнорирован, если правила имеют единственное смещение для всех моментов времени
Возвращает:
true, если указанный момент времени соответствует летнему времени, иначе false.

isValidOffset

public boolean isValidOffset(LocalDateTime localDateTime, ZoneOffset offset)
Проверяет, является ли смещение даты и времени допустимым для этих правил.

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

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

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

следующаяПереход

public ZoneOffsetTransition nextTransition(Instant instant)
Получает следующий переход после указанного момента времени.

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

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

предыдущийПереход

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, даже если они на самом деле одинаковы.

Это определение должно привести к сравнению всех состояний реализаций.

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

hashCode

public int hashCode()
Возвращает подходящий хэш-код, учитывая определение #equals.
Overrides:
hashCode в классе Object
Возвращает:
хэш-код
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

toString

public String toString()
Возвращает строку, описывающую этот объект.
Overrides:
toString в классе Object
Возвращает:
строка для отладки, не null

© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/zone/ZoneRules.html

Spec-Zone.ru

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