Spec-Zone.ru › OpenJDK 25

Класс 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()
Возвращает строковое представление этого объекта.

Методы, объявленные в классе 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);
 }

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

Параметры:
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, если дата и время со смещением допустимы согласно этим правилам

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(Object)

toString

public String toString()
Возвращает строковое представление этого объекта.
Переопределяет:
toString в классе Object
Возвращает:
строку для отладки; не должна быть null

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/time/zone/ZoneRules.html

Spec-Zone.ru

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