Spec-Zone.ru › OpenJDK 27

Класс ZoneOffset

java.lang.Object
java.time.ZoneId
java.time.ZoneOffset
Все реализуемые интерфейсы:
Serializable, Comparable<ZoneOffset>, TemporalAccessor, TemporalAdjuster
public final class ZoneOffset extends ZoneId implements TemporalAccessor, TemporalAdjuster, Comparable<ZoneOffset>, Serializable
Смещение часового пояса относительно Гринвича/UTC, например +02:00.

Смещение часового пояса — это разница во времени между часовым поясом и Гринвичем/UTC. Обычно оно представляет собой фиксированное количество часов и минут.

В разных частях мира используются разные смещения часовых поясов. Правила изменения смещений в зависимости от места и времени года представлены в классе ZoneId.

Например, зимой время в Париже на один час опережает время по Гринвичу/UTC, а летом — на два часа. Экземпляр ZoneId для Парижа будет ссылаться на два экземпляра ZoneOffset: экземпляр +01:00 для зимы и экземпляр +02:00 для лета.

В 2008 году смещения часовых поясов в разных частях мира находились в диапазоне от -12:00 до +14:00. Чтобы предотвратить проблемы в случае расширения этого диапазона и при этом обеспечить проверку допустимости значений, диапазон смещений ограничен значениями от -18:00 до 18:00 включительно.

Этот класс предназначен для использования с календарной системой ISO. Поля часов, минут и секунд основаны на предположениях, верных для стандартных определений этих полей в ISO. Этот класс можно использовать с другими календарными системами, если определение полей времени соответствует определению в календарной системе ISO.

Экземпляры ZoneOffset необходимо сравнивать с помощью equals(Object). Реализации могут кэшировать некоторые распространённые смещения, однако приложения не должны полагаться на такое кэширование.

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

Требования к реализации:
Этот класс неизменяемый и потокобезопасный.
С версии:
1.8
См. также:
  • Сериализованная форма

Краткое описание полей

Модификатор и тип Поле Описание
static final ZoneOffset MAX
Константа, задающая максимальное поддерживаемое смещение.
static final ZoneOffset MIN
Константа, задающая минимальное поддерживаемое смещение.
static final ZoneOffset UTC
Смещение часового пояса для UTC с идентификатором 'Z'.

Поля, объявленные в классе ZoneId

SHORT_IDS
Модификатор и тип Поле Описание
static final Map<String,String> SHORT_IDS
Карта переопределений часовых поясов, позволяющая использовать краткие названия часовых поясов.

Краткое описание методов

Модификатор и тип Метод Описание
Temporal adjustInto(Temporal temporal)
Настраивает указанный объект времени так, чтобы его смещение совпадало со смещением этого объекта.
int compareTo(ZoneOffset other)
Сравнивает это смещение с другим смещением в порядке убывания.
boolean equals(Object obj)
Проверяет, равно ли это смещение другому смещению.
static ZoneOffset from(TemporalAccessor temporal)
Получает экземпляр ZoneOffset из объекта времени.
int get(TemporalField field)
Получает значение указанного поля этого смещения в виде int.
String getId()
Получает нормализованный идентификатор смещения часового пояса.
long getLong(TemporalField field)
Получает значение указанного поля этого смещения в виде long.
ZoneRules getRules()
Получает связанные правила часового пояса.
int getTotalSeconds()
Получает полное смещение часового пояса в секундах.
int hashCode()
Хеш-код этого смещения.
boolean isSupported(TemporalField field)
Проверяет, поддерживается ли указанное поле.
static ZoneOffset of(String offsetId)
Получает экземпляр ZoneOffset по идентификатору.
static ZoneOffset ofHours(int hours)
Получает экземпляр ZoneOffset по смещению в часах.
static ZoneOffset ofHoursMinutes(int hours, int minutes)
Получает экземпляр ZoneOffset по смещению в часах и минутах.
static ZoneOffset ofHoursMinutesSeconds(int hours, int minutes, int seconds)
Получает экземпляр ZoneOffset по смещению в часах, минутах и секундах.
static ZoneOffset ofTotalSeconds(int totalSeconds)
Получает экземпляр ZoneOffset, задавая полное смещение в секундах
<R> R query(TemporalQuery<R> query)
Выполняет запрос к этому смещению с помощью указанного запроса.
ValueRange range(TemporalField field)
Получает диапазон допустимых значений для указанного поля.
String toString()
Представляет это смещение в виде String, используя нормализованный идентификатор.

Методы, объявленные в классе ZoneId

getAvailableZoneIds, getDisplayName, normalized, of, ofOffset, systemDefault
Модификатор и тип Метод Описание
static Set<String> getAvailableZoneIds()
Получает набор доступных идентификаторов часовых поясов.
String getDisplayName(TextStyle style, Locale locale)
Получает текстовое представление часового пояса, например 'British Time' или '+02:00'.
ZoneId normalized()
Нормализует идентификатор часового пояса, по возможности возвращая ZoneOffset.
static ZoneId of(String zoneId, Map<String,String> aliasMap)
Получает экземпляр ZoneId по его идентификатору, используя карту псевдонимов в дополнение к стандартным идентификаторам часовых поясов.
static ZoneId ofOffset(String prefix, ZoneOffset offset)
Получает экземпляр ZoneId, оборачивающий смещение.
static ZoneId systemDefault()
Получает системный часовой пояс по умолчанию.

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и может быть удалена в будущей версии.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание полей

UTC

public static final ZoneOffset UTC
Смещение часового пояса для UTC с идентификатором 'Z'.

MIN

public static final ZoneOffset MIN
Константа минимального поддерживаемого смещения.

MAX

public static final ZoneOffset MAX
Константа максимального поддерживаемого смещения.

Подробное описание методов

of

public static ZoneOffset of(String offsetId)
Получает экземпляр ZoneOffset по идентификатору.

Этот метод анализирует строковый идентификатор ZoneOffset и возвращает экземпляр. Анализатор принимает все форматы, создаваемые методом getId(), а также некоторые дополнительные форматы:

  • Z - для UTC
  • +h
  • +hh
  • +hh:mm
  • -hh:mm
  • +hhmm
  • -hhmm
  • +hh:mm:ss
  • -hh:mm:ss
  • +hhmmss
  • -hhmmss
Обратите внимание, что ± означает знак плюс или минус.

Идентификатор возвращённого смещения будет нормализован до одного из форматов, описанных методом getId().

Максимальный поддерживаемый диапазон — от +18:00 до -18:00 включительно.

Параметры:
offsetId - идентификатор смещения, не null
Возвращает:
смещение часового пояса, не null
Выбрасывает:
DateTimeException - если идентификатор смещения недопустим

ofHours

public static ZoneOffset ofHours(int hours)
Получает экземпляр ZoneOffset, используя смещение в часах.
Параметры:
hours - смещение часового пояса в часах, от -18 до +18
Возвращает:
смещение часового пояса, не null
Выбрасывает:
DateTimeException - если смещение выходит за требуемый диапазон

ofHoursMinutes

public static ZoneOffset ofHoursMinutes(int hours, int minutes)
Получает экземпляр ZoneOffset, используя смещение в часах и минутах.

Знаки компонентов часов и минут должны совпадать. Поэтому, если значение часов отрицательное, значение минут должно быть отрицательным или равным нулю. Если значение часов равно нулю, значение минут может быть положительным, отрицательным или равным нулю.

Параметры:
hours - смещение часового пояса в часах, от -18 до +18
minutes - смещение часового пояса в минутах, от 0 до ±59; знак совпадает со знаком часов
Возвращает:
смещение часового пояса, не null
Выбрасывает:
DateTimeException - если смещение выходит за требуемый диапазон

ofHoursMinutesSeconds

public static ZoneOffset ofHoursMinutesSeconds(int hours, int minutes, int seconds)
Получает экземпляр ZoneOffset, используя смещение в часах, минутах и секундах.

Знаки компонентов часов, минут и секунд должны совпадать. Поэтому, если значение часов отрицательное, значения минут и секунд должны быть отрицательными или равными нулю.

Параметры:
hours - смещение часового пояса в часах, от -18 до +18
minutes - смещение часового пояса в минутах, от 0 до ±59; знак совпадает со знаками часов и секунд
seconds - смещение часового пояса в секундах, от 0 до ±59; знак совпадает со знаками часов и минут
Возвращает:
смещение часового пояса, не null
Выбрасывает:
DateTimeException - если смещение выходит за требуемый диапазон

from

public static ZoneOffset from(TemporalAccessor temporal)
Получает экземпляр ZoneOffset из временного объекта.

Получает смещение на основе указанного временного объекта. TemporalAccessor представляет собой произвольный набор сведений о дате и времени, который эта фабрика преобразует в экземпляр ZoneOffset.

TemporalAccessor представляет некоторую форму сведений о дате и времени. Эта фабрика преобразует произвольный временной объект в экземпляр ZoneOffset.

Для преобразования используется запрос TemporalQueries.offset(), который извлекает поле OFFSET_SECONDS.

Сигнатура этого метода соответствует функциональному интерфейсу TemporalQuery, что позволяет использовать его как запрос посредством ссылки на метод: ZoneOffset::from.

Параметры:
temporal - временной объект для преобразования, не null
Возвращает:
смещение часового пояса, не null
Выбрасывает:
DateTimeException - если преобразование в ZoneOffset невозможно

ofTotalSeconds

public static ZoneOffset ofTotalSeconds(int totalSeconds)
Получает экземпляр ZoneOffset, задавая общее смещение в секундах.

Смещение должно находиться в диапазоне от -18:00 до +18:00, что соответствует значениям от -64 800 до +64 800.

Параметры:
totalSeconds - общее смещение часового пояса в секундах, от -64 800 до +64 800
Возвращает:
ZoneOffset, не null
Выбрасывает:
DateTimeException - если смещение выходит за требуемый диапазон

getTotalSeconds

public int getTotalSeconds()
Возвращает полное смещение часового пояса в секундах.

Это основной способ получить величину смещения. Метод возвращает сумму значений полей часов, минут и секунд в виде единого смещения, которое можно прибавить ко времени.

Возвращает:
полную величину смещения часового пояса в секундах

getId

public String getId()
Возвращает нормализованный идентификатор смещения часового пояса.

Идентификатор незначительно отличается от стандартной строки смещения в формате ISO-8601. Используются три формата:

  • Z - для UTC (ISO-8601)
  • +hh:mm или -hh:mm - если секунды равны нулю (ISO-8601)
  • +hh:mm:ss или -hh:mm:ss - если секунды не равны нулю (не ISO-8601)
Определён в:
getId в классе ZoneId
Возвращает:
идентификатор смещения часового пояса, не null

getRules

public ZoneRules getRules()
Возвращает связанные правила часового пояса.

При любом запросе правила всегда будут возвращать это смещение. Класс реализации является неизменяемым, потокобезопасным и сериализуемым.

Определён в:
getRules в классе ZoneId
Возвращает:
правила, не null

isSupported

public boolean isSupported(TemporalField field)
Проверяет, поддерживается ли указанное поле.

Проверяет, можно ли получить значение указанного поля для этого смещения. Если результат — false, вызов методов range и get приведёт к выбросу исключения.

Если поле является ChronoField, запрос обрабатывается здесь. Для поля OFFSET_SECONDS возвращается true. Для всех остальных экземпляров ChronoField возвращается false.

Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.isSupportedBy(TemporalAccessor) с передачей this в качестве аргумента. Поддержку поля определяет само поле.

Определён в:
isSupported в интерфейсе TemporalAccessor
Параметры:
field - проверяемое поле; null возвращает false
Возвращает:
true, если это смещение поддерживает поле; в противном случае false

range

public ValueRange range(TemporalField field)
Возвращает диапазон допустимых значений для указанного поля.

Объект диапазона задаёт минимальное и максимальное допустимые значения поля. Это смещение используется для повышения точности возвращаемого диапазона. Если вернуть диапазон невозможно, поскольку поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.

Если поле является ChronoField, запрос обрабатывается здесь. Метод supported fields возвращает соответствующие экземпляры диапазона. Для всех остальных экземпляров ChronoField выбрасывается UnsupportedTemporalTypeException.

Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.rangeRefinedBy(TemporalAccessor) с передачей this в качестве аргумента. Возможность получить диапазон определяется самим полем.

Определён в:
range в интерфейсе TemporalAccessor
Параметры:
field - поле, для которого запрашивается диапазон, не null
Возвращает:
диапазон допустимых значений поля, не null
Выбрасывает:
DateTimeException - если диапазон поля невозможно получить
UnsupportedTemporalTypeException - если поле не поддерживается

get

public int get(TemporalField field)
Возвращает значение указанного поля этого смещения в виде int.

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

Если поле является ChronoField, запрос обрабатывается здесь. Для поля OFFSET_SECONDS возвращается значение смещения. Для всех остальных экземпляров ChronoField выбрасывается UnsupportedTemporalTypeException.

Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.getFrom(TemporalAccessor) с передачей this в качестве аргумента. Возможность получить значение и его смысл определяются самим полем.

Определён в:
get в интерфейсе TemporalAccessor
Параметры:
field - поле, значение которого нужно получить, не null
Возвращает:
значение поля
Выбрасывает:
DateTimeException - если значение поля невозможно получить или оно выходит за пределы допустимого диапазона значений поля
UnsupportedTemporalTypeException - если поле не поддерживается или диапазон значений выходит за пределы int
ArithmeticException - при переполнении числового значения

getLong

public long getLong(TemporalField field)
Возвращает значение указанного поля этого смещения в виде long.

Этот метод запрашивает значение указанного поля для этого смещения. Если вернуть значение невозможно, поскольку поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.

Если поле является ChronoField, запрос обрабатывается здесь. Для поля OFFSET_SECONDS возвращается значение смещения. Для всех остальных экземпляров ChronoField выбрасывается UnsupportedTemporalTypeException.

Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.getFrom(TemporalAccessor) с передачей this в качестве аргумента. Возможность получить значение и его смысл определяются самим полем.

Определён в:
getLong в интерфейсе TemporalAccessor
Параметры:
field - поле, значение которого нужно получить, не null
Возвращает:
значение поля
Выбрасывает:
DateTimeException - если значение поля невозможно получить
UnsupportedTemporalTypeException - если поле не поддерживается
ArithmeticException - при переполнении числового значения

query

public <R> R query(TemporalQuery<R> query)
Выполняет запрос к этому смещению с помощью указанного запроса.

Этот метод выполняет запрос к этому смещению, используя указанный объект стратегии запроса. Объект TemporalQuery задаёт логику получения результата. Чтобы узнать, каким будет результат этого метода, ознакомьтесь с документацией запроса.

Результат этого метода получается вызовом метода TemporalQuery.queryFrom(TemporalAccessor) указанного запроса с передачей this в качестве аргумента.

Определён в:
query в интерфейсе TemporalAccessor
Параметры типа:
R - тип результата
Параметры:
query - выполняемый запрос, не null
Возвращает:
результат запроса; может быть возвращено null (определяется запросом)
Выбрасывает:
DateTimeException - если запрос невозможно выполнить (определяется запросом)
ArithmeticException - при переполнении числового значения (определяется запросом)

adjustInto

public Temporal adjustInto(Temporal temporal)
Изменяет указанный временной объект, устанавливая смещение, совпадающее со смещением этого объекта.

Метод возвращает временной объект того же наблюдаемого типа, что и входной, но с изменённым смещением, совпадающим с этим.

Это изменение эквивалентно вызову Temporal.with(TemporalField, long) с передачей ChronoField.OFFSET_SECONDS в качестве поля.

В большинстве случаев код будет понятнее, если изменить порядок вызовов и использовать Temporal.with(TemporalAdjuster):

  // these two lines are equivalent, but the second approach is recommended
  temporal = thisOffset.adjustInto(temporal);
  temporal = temporal.with(thisOffset);

Этот экземпляр неизменяем, и вызов данного метода не влияет на него.

Определён в:
adjustInto в интерфейсе TemporalAdjuster
Параметры:
temporal - целевой объект для изменения, не null
Возвращает:
изменённый объект, не null
Выбрасывает:
DateTimeException - если изменение невозможно
ArithmeticException - при переполнении числового значения

compareTo

public int compareTo(ZoneOffset other)
Сравнивает это смещение с другим смещением в порядке убывания.

Смещения сравниваются в порядке их расположения в мире для одного и того же времени суток. Так, смещение +10:00 предшествует смещению +09:00, и далее до -18:00.

Сравнение «согласовано с equals» в соответствии с определением Comparable.

Определён в:
compareTo в интерфейсе Comparable<ZoneOffset>
Параметры:
other - другая дата для сравнения, не null
Возвращает:
значение сравнения: меньше нуля, если значение totalSeconds этого объекта меньше значения totalSeconds у other; ноль, если они равны; больше нуля, если значение totalSeconds этого объекта больше значения totalSeconds у other
Выбрасывает:
NullPointerException - если other равен null

equals

public boolean equals(Object obj)
Проверяет, равно ли это смещение другому смещению.

Сравнение выполняется по величине смещения в секундах. Это эквивалентно сравнению по идентификатору.

Переопределяет:
equals в классе ZoneId
Параметры:
obj - проверяемый объект; null возвращает false
Возвращает:
true, если это смещение равно другому смещению
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Хеш-код этого смещения.
Переопределяет:
hashCode в классе ZoneId
Возвращает:
подходящий хеш-код
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

toString

public String toString()
Представляет это смещение в виде String, используя нормализованный идентификатор.
Переопределяет:
toString в классе ZoneId
Возвращает:
строковое представление этого смещения, не null

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзор концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её филиалов в США и других странах.
Авторские права © 1993, 2026, 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.

Spec-Zone.ru

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