Класс 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
static Set |
getAvailableZoneIds() |
Получает набор доступных идентификаторов часовых поясов. |
String |
getDisplayName |
Получает текстовое представление часового пояса, например 'British Time' или '+02:00'. |
ZoneId |
normalized() |
Нормализует идентификатор часового пояса, по возможности возвращая ZoneOffset. |
static ZoneId |
of |
Получает экземпляр ZoneId по его идентификатору, используя карту псевдонимов в дополнение к стандартным идентификаторам часовых поясов. |
static ZoneId |
ofOffset |
Получает экземпляр 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 |
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
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, что соответствует значениям от -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)
getRules
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)
Сравнение выполняется по величине смещения в секундах. Это эквивалентно сравнению по идентификатору.
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.