Класс 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(java.lang.Object). Реализации могут кешировать некоторые распространённые смещения, однако приложения не должны полагаться на такой кэширование.
Это класс value-based; использование операций, чувствительных к идентификатору (включая сравнение по ссылке (==), хеш-код по идентификатору или синхронизацию) на экземплярах ZoneOffset может привести к непредсказуемым результатам и должно быть избегаемо. Для сравнения следует использовать метод equals.
- Требования к реализации:
- Этот класс неизменяемый и потокобезопасный.
- С:
- 1.8
- См. также:
- Сериализованная форма
Поля
| Модификатор и тип | Поле и описание |
|---|---|
static ZoneOffset |
MAX Константа для максимального поддерживаемого смещения. |
static ZoneOffset |
MIN Константа для максимального поддерживаемого смещения. |
static ZoneOffset |
UTC Смещение часового пояса для UTC, с идентификатором 'Z'. |
Поля, унаследованные от класса java.time.ZoneId
SHORT_IDS Методы
| Модификатор и тип | Метод и описание |
|---|---|
Temporal |
adjustInto(Temporal temporal) Корректирует указанный временной объект так, чтобы он имел то же смещение, что и этот объект. |
int |
compareTo(ZoneOffset other) Сравнивает это смещение с другим смещением в порядке убывания. |
boolean |
equals(Object obj) Проверяет, равно ли это смещение другому смещению. |
static ZoneOffset |
from(TemporalAccessor temporal) Получает экземпляр |
int |
get(TemporalField field) Возвращает значение указанного поля из этого смещения как |
String |
getId() Получает нормализованный идентификатор смещения часового пояса. |
long |
getLong(TemporalField field) Возвращает значение указанного поля из этого смещения как |
ZoneRules |
getRules() Возвращает связанные правила часового пояса. |
int |
getTotalSeconds() Получает общее смещение часового пояса во секундах. |
int |
hashCode() Хеш-код для этого смещения. |
boolean |
isSupported(TemporalField field) Проверяет, поддерживается ли указанное поле. |
static ZoneOffset |
of(String offsetId) Получает экземпляр |
static ZoneOffset |
ofHours(int hours) Получает экземпляр |
static ZoneOffset |
ofHoursMinutes(int hours,
int minutes) Получает экземпляр |
static ZoneOffset |
ofHoursMinutesSeconds(int hours,
int minutes,
int seconds) Получает экземпляр |
static ZoneOffset |
ofTotalSeconds(int totalSeconds) Получает экземпляр |
<R> R |
query(TemporalQuery<R> query) Использует это смещение с помощью указанного запроса. |
ValueRange |
range(TemporalField field) Получает диапазон допустимых значений для указанного поля. |
String |
toString() Выводит это смещение как |
Методы, унаследованные от класса java.time.ZoneId
getAvailableZoneIds, getDisplayName, normalized, of, ofOffset, systemDefault Методы, унаследованные от класса java.lang.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)
getRules
public ZoneRules 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 - Возвращает:
- значение сравнения, отрицательное, если меньше, положительное, если больше
- Исключения:
-
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(java.lang.Object)
toString
public String toString()
Выводит это смещение в виде String, используя нормализованный идентификатор.
© 1993, 2020, 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.