Класс 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() Возвращает подходящий код хэширования, учитывая определение |
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)
Получает смещения, применимые к указанной локальной дате и времени по этим правилам.
Сопоставление локальной даты и времени со смещением не является тривиальным. Существуют три случая:
- Нормальный, с одним допустимым смещением. В подавляющем большинстве случаев применяется нормальный случай, где для локальной даты и времени существует единственное допустимое смещение.
- Пропуск, с нулевыми допустимыми смещениями. Это происходит, когда часы перепрыгивают вперед, обычно из-за весеннего перехода на летнее время от "зимы" к "лету". В пропуске есть значения локальной даты и времени без допустимого смещения.
- Перекрытие, с двумя допустимыми смещениями. Это происходит, когда часы переводятся назад, обычно из-за осеннего перехода на летнее время от "лета" к "зиме". В перекрытии есть значения локальной даты и времени с двумя допустимыми смещениями.
Существуют различные способы обработки преобразования из 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)
Получает переход смещения, применимый к указанной локальной дате и времени по этим правилам.
Сопоставление локальной даты и времени со смещением не является тривиальным. Существуют три случая:
- Нормальный, с одним допустимым смещением. В подавляющем большинстве случаев применяется нормальный случай, где для локальной даты и времени существует единственное допустимое смещение.
- Пропуск, с нулевыми допустимыми смещениями. Это происходит, когда часы перепрыгивают вперед, обычно из-за весеннего перехода на летнее время от "зимы" к "лету". В пропуске есть значения локальной даты и времени без допустимого смещения.
- Перекрытие, с двумя допустимыми смещениями. Это происходит, когда часы переводятся назад, обычно из-за осеннего перехода на летнее время от "лета" к "зиме". В перекрытии есть значения локальной даты и времени с двумя допустимыми смещениями.
Существуют различные способы обработки преобразования из 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()
Возвращает строку, описывающую этот объект.
© 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.