Класс 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(java.lang.Object). Реализации могут выбирать кеширование некоторых общих смещений, однако приложения не должны полагаться на такое кеширование.
Это класс с фиксированным значением; программисты должны рассматривать экземпляры, которые равны, как взаимозаменяемые и не должны использовать экземпляры для синхронизации, иначе могут возникнуть непредсказуемые поведения. Например, в будущих версиях синхронизация может не работать. Для сравнений необходимо использовать метод equals.
- Требования к реализации:
- Этот класс неизменяем и потокобезопасен.
- С:
- 1.8
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final ZoneOffset |
MAX |
Константа для максимального поддерживаемого смещения. |
static final ZoneOffset |
MIN |
Константа для минимального поддерживаемого смещения. |
static final ZoneOffset |
UTC |
Смещение часового пояса для UTC со значением ID '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, используя нормализованный идентификатор. |
Методы, объявленные в классе java.time.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)
Проверка, может ли это смещение быть запрошено для указанного поля. Если 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 меньше
othertotalSeconds, ноль, если они равны, больше нуля, если это totalSeconds большеothertotalSeconds - Использует:
-
NullPointerException- еслиotherравно null
equals
public boolean equals(Object obj)
Сравнение основано на количестве смещения во секундах. Это эквивалентно сравнению по ID.
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/ZoneOffset.html