Класс 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 с идентификатором '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 - Возвращает:
- смещение часового пояса, не 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)
Проверяет, может ли быть запрошено это смещение для указанного поля. Если 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)
Сравнение основано на величине смещения во секундах. Это эквивалентно сравниванию по ID.
- Переопределяет:
-
equalsв классеZoneId - Параметры:
-
obj- объект для проверки, null возвращает false - Возвращает:
- true, если это равно другому смещению
- См. также:
hashCode
public int hashCode()
- Переопределяет:
-
hashCodeв классеZoneId - Возвращает:
- подходящий хеш-код
- См. также:
toString
public String toString()
String, используя нормализованный ID.- Переопределяет:
-
toStringв классеZoneId - Возвращает:
- строковое представление этого смещения, не null
© 1993, 2021, 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/17/docs/api/java.base/java/time/ZoneOffset.html