Класс ZoneRules
- Все реализованные интерфейсы:
Serializable
public final class ZoneRules extends Object implements Serializable
Правила моделируют все исторические и будущие переходы для временной зоны. ZoneOffsetTransition используется для известных переходов, обычно исторических. ZoneOffsetTransitionRule используется для будущих переходов, основанных на результате алгоритма.
Правила загружаются через ZoneRulesProvider с использованием ZoneId. Те же правила могут быть совместно использованы внутри нескольких идентификаторов зон.
Сериализация экземпляра ZoneRules сохранит весь набор правил. Она не сохраняет идентификатор зоны, так как он не входит в состояние этого объекта.
Реализация правил может или не может хранить полную информацию об исторических и будущих переходах, а хранимая информация является только настолько точной, насколько это предоставлено реализацией поставщиком правил. Приложения должны рассматривать предоставленные данные как представляющие лучшую доступную реализацией правила информацию.
- Требования к реализации:
- Этот класс неизменяемый и потокобезопасный.
- С:
- 1.8
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Проверяет, равны ли эти наборы правил другому. |
Duration |
getDaylightSavings |
Получает величину летнего времени, используемую для указанного момента во времени в этой зоне. |
ZoneOffset |
getOffset |
Получает смещение, применимое в указанный момент времени в этих правилах. |
ZoneOffset |
getOffset |
Получает подходящее смещение для указанной локальной даты и времени в этих правилах. |
ZoneOffset |
getStandardOffset |
Получает стандартное смещение для указанного момента во времени в этой зоне. |
ZoneOffsetTransition |
getTransition |
Получает переход смещения, применимый в указанную локальную дату и время в этих правилах. |
List |
getTransitionRules() |
Получает список правил перехода для лет, выходящих за рамки тех, которые определены в списке переходов. |
List |
getTransitions() |
Получает полный список полностью определенных переходов. |
List |
getValidOffsets |
Получает смещение, применимое в указанную локальную дату и время в этих правилах. |
int |
hashCode() |
Возвращает подходящий хэш-код, учитывая определение #equals. |
boolean |
isDaylightSavings |
Проверяет, находится ли указанный момент времени в летнем времени. |
boolean |
isFixedOffset() |
Проверяет, являются ли правила зоны фиксированными, таким образом, смещение никогда не меняется. |
boolean |
isValidOffset |
Проверяет, является ли дата и время смещения допустимым для этих правил. |
ZoneOffsetTransition |
nextTransition |
Получает следующий переход после указанного момента времени. |
static ZoneRules |
of |
Получает экземпляр ZoneRules, имеющий фиксированные правила зоны. |
static ZoneRules |
of |
Получает экземпляр ZoneRules. |
ZoneOffsetTransition |
previousTransition |
Получает предыдущий переход перед указанным моментом времени. |
String |
toString() |
Возвращает строку, описывающую этот объект. |
Подробное описание методов
of
public static ZoneRules of(ZoneOffset baseStandardOffset, ZoneOffset baseWallOffset, List<ZoneOffsetTransition> standardOffsetTransitionList, List<ZoneOffsetTransition> transitionList, List<ZoneOffsetTransitionRule> lastRules)
- Параметры:
-
baseStandardOffset- стандартное смещение, используемое до установления правил, не null -
baseWallOffset- смещение по часам, используемое до установления правил, не null -
standardOffsetTransitionList- список изменений стандартного смещения, не null -
transitionList- список переходов, не null -
lastRules- повторяющиеся последние правила, размер 16 или меньше, не null - Возвращает:
- правила зоны, не null
of
public static ZoneRules of(ZoneOffset offset)
- Параметры:
-
offset- смещение, на котором основаны фиксированные правила зоны, не null - Возвращает:
- правила зоны, не null
- См. также:
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)
Сопоставление локальной даты и времени со смещением нетривиально. Существует три случая:
- Нормальный, с одним допустимым смещением. В подавляющем большинстве случаев применяется нормальный случай, где для локальной даты и времени существует одно допустимое смещение.
- Пробел, с нулевым количеством допустимых смещений. Это происходит, когда часы переходят вперед, обычно из-за весеннего перехода на летнее время. В пробеле есть значения локальной даты и времени без допустимого смещения.
- Перекрытие, с двумя допустимыми смещениями. Это происходит, когда часы переводятся назад, обычно из-за осеннего перехода на зимнее время. В перекрытии есть значения локальной даты и времени с двумя допустимыми смещениями.
Существует несколько способов обработки преобразования из 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)
Сопоставление локальной даты и времени со смещением нетривиально. Существует три случая:
- Нормальный, с одним допустимым смещением. В подавляющем большинстве случаев применяется нормальный случай, где для локальной даты и времени существует одно допустимое смещение.
- Пробел, с нулевым количеством допустимых смещений. Это происходит, когда часы переходят вперед, обычно из-за весеннего перехода на летнее время. В пробеле есть значения локальной даты и времени без допустимого смещения.
- Перекрытие, с двумя допустимыми смещениями. Это происходит, когда часы переводятся назад, обычно из-за осеннего перехода на зимнее время. В перекрытии есть значения локальной даты и времени с двумя допустимыми смещениями.
Существует несколько способов обработки преобразования из 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, если это перед первым переключением
получитьПереключения
public List<ZoneOffsetTransition> getTransitions()
Полный набор переключений для этого экземпляра правил определяется этим методом и getTransitionRules(). Этот метод возвращает те переключения, которые были полностью определены. Как правило, это исторические переключения, но они могут быть и в будущем.
Список будет пустым для правил с фиксированным смещением и для любой временной зоны, где всегда было только одно смещение. Список также будет пустым, если правила переключений неизвестны.
- Возвращает:
- неизменяемый список полностью определённых переключений, не null
получитьПравилаПереключений
public List<ZoneOffsetTransitionRule> getTransitionRules()
Полный набор переключений для этого экземпляра правил определяется этим методом и getTransitions(). Этот метод возвращает экземпляры ZoneOffsetTransitionRule, которые определяют алгоритм, когда произойдут переключения.
Для любого заданного ZoneRules, этот список содержит правила переключений для лет, которые выходят за рамки тех лет, которые были полностью определены. Эти правила, как правило, относятся к будущим изменениям правил летнего времени.
Если зона определяет летнее время в будущем, то список обычно имеет размер два и содержит информацию об входе и выходе из летнего времени. Если зона не имеет летнего времени или информация о будущих изменениях неопределённа, список будет пустым.
Список будет пустым для правил с фиксированным смещением и для любой временной зоны, где нет летнего времени. Список также будет пустым, если правила переключений неизвестны.
- Возвращает:
- неизменяемый список правил переключений, не null
equals
public boolean equals(Object otherRules)
Два набора правил равны, если они всегда приводят к одному и тому же результату для любого данного момента времени или даты и времени. Правила из двух разных групп могут вернуть false, даже если они фактически одинаковые.
Это определение должно привести к реализации, сравнивающей всё состояние.
- Overrides:
-
equalsв классеObject - Параметры:
-
otherRules- другие правила, null возвращает false - Возвращает:
- true, если эти правила такие же, как указанные
- См. также:
hashCode
public int hashCode()
#equals.- Overrides:
-
hashCodeв классеObject - Возвращает:
- хэш-код
- См. также:
toString
public String toString()
- Overrides:
-
toStringв классеObject - Возвращает:
- строка для отладки, не null
© 1993, 2023, 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/21/docs/api/java.base/java/time/zone/ZoneRules.html