Spec-Zone.ru › OpenJDK 17

Класс 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 может быть проигнорирован, если правила имеют одно смещение для всех моментов времени
Возвращает:
стандартное смещение, не null

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, 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/zone/ZoneRules.html

Spec-Zone.ru

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