Класс ZoneOffset
- Все реализуемые интерфейсы:
Serializable, Comparable<ZoneOffset>, TemporalAccessor, TemporalAdjuster
public final class ZoneOffset extends ZoneId implements TemporalAccessor, TemporalAdjuster, Comparable<ZoneOffset>, Serializable
+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'. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Temporal |
adjustInto |
Корректирует указанный объект времени так, чтобы его смещение совпадало со смещением этого объекта. |
int |
compareTo |
Сравнивает это смещение с другим смещением в порядке убывания. |
boolean |
equals |
Проверяет, равно ли это смещение другому смещению. |
static ZoneOffset |
from |
Получает экземпляр ZoneOffset из объекта времени. |
int |
get |
Получает значение указанного поля из этого смещения в виде int. |
String |
getId() |
Получает нормализованный идентификатор смещения часового пояса. |
long |
getLong |
Получает значение указанного поля из этого смещения в виде long. |
ZoneRules |
getRules() |
Получает связанные правила часового пояса. |
int |
getTotalSeconds() |
Получает полное смещение часового пояса в секундах. |
int |
hashCode() |
Хеш-код этого смещения. |
boolean |
isSupported |
Проверяет, поддерживается ли указанное поле. |
static ZoneOffset |
of |
Получает экземпляр ZoneOffset по идентификатору. |
static ZoneOffset |
ofHours |
Получает экземпляр ZoneOffset, используя смещение в часах. |
static ZoneOffset |
ofHoursMinutes |
Получает экземпляр ZoneOffset, используя смещение в часах и минутах. |
static ZoneOffset |
ofHoursMinutesSeconds |
Получает экземпляр ZoneOffset, используя смещение в часах, минутах и секундах. |
static ZoneOffset |
ofTotalSeconds |
Получает экземпляр ZoneOffset, задавая полное смещение в секундах |
<R> R |
query |
Выполняет запрос к этому смещению с помощью указанного запроса. |
ValueRange |
range |
Получает диапазон допустимых значений указанного поля. |
String |
toString() |
Представляет это смещение в виде String, используя нормализованный идентификатор. |
Методы, объявленные в классе ZoneId
getAvailableZoneIds, getDisplayName, normalized, of, ofOffset, systemDefault
Подробное описание полей
UTC
public static final ZoneOffset UTC
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)
getRules
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)
Сравнение основано на величине смещения в секундах. Оно эквивалентно сравнению по идентификатору.
hashCode
toString
© 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