Spec-Zone.ru › OpenJDK 25

Класс 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

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

Модификатор и тип Метод Описание
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

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

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

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, что соответствует значениям от -64800 до +64800.

Параметры:
totalSeconds — полное смещение часового пояса в секундах, от -64800 до +64800
Возвращает:
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)
Проверяет, поддерживается ли указанное поле.

Метод проверяет, можно ли получить значение указанного поля для этого смещения. Если результат отрицательный, вызовы методов 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, 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/ZoneOffset.html

Spec-Zone.ru

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