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)
。 实现可能会选择缓存某些常见的偏移量,但是应用程序不能依赖这种缓存。
这是一个value-based类; 使用身份敏感的操作(包括引用相等(的==
上的实例),标识哈希码,或同步) ZoneOffset
可具有不可预测的结果,应当避免。 equals
方法应用于比较。
Modifier and Type | Field and Description |
---|---|
static ZoneOffset |
MAX
最大支持偏移量的常数。
|
static ZoneOffset |
MIN
最大支持偏移量的常数。
|
static ZoneOffset |
UTC
UTC的时区偏移量,ID为“Z”。
|
Modifier and Type | Method and Description |
---|---|
Temporal |
adjustInto(Temporal temporal)
调整指定的时间对象与此对象的偏移量相同。
|
int |
compareTo(ZoneOffset other)
将此偏移量与其他偏移量按降序进行比较。
|
boolean |
equals(Object obj)
检查这个偏移量是否等于另一个偏移量。
|
static ZoneOffset |
from(TemporalAccessor temporal)
从时间对象获取一个
ZoneOffset 的实例。
|
int |
get(TemporalField field)
从该偏移量获取指定字段的值作为
int 。
|
String |
getId()
获取标准化区域偏移ID。
|
long |
getLong(TemporalField field)
从该偏移量获取指定字段的值作为
long 。
|
ZoneRules |
getRules()
获取相关的时区规则。
|
int |
getTotalSeconds()
获取总区域偏移量(以秒为单位)。
|
int |
hashCode()
这个偏移的哈希码。
|
boolean |
isSupported(TemporalField field)
检查指定的字段是否受支持。
|
static ZoneOffset |
of(String offsetId)
使用ID获取
ZoneOffset 的实例。
|
static ZoneOffset |
ofHours(int hours)
获得
ZoneOffset 的实例,使用小时数的偏移量。
|
static ZoneOffset |
ofHoursMinutes(int hours, int minutes)
获取
ZoneOffset 的实例,使用小时和分钟的偏移量。
|
static ZoneOffset |
ofHoursMinutesSeconds(int hours, int minutes, int seconds)
获取
ZoneOffset 的实例,使用小时,分钟和秒的偏移量。
|
static ZoneOffset |
ofTotalSeconds(int totalSeconds)
获取
ZoneOffset 的实例,
ZoneOffset 总偏移量(以秒为单位)
|
<R> R |
query(TemporalQuery<R> query)
使用指定的查询查询此偏移量。
|
ValueRange |
range(TemporalField field)
获取指定字段的有效值的范围。
|
String |
toString()
输出该偏移为
String ,使用归一化ID。
|
getAvailableZoneIds, getDisplayName, normalized, of, ofOffset, systemDefault
public static final ZoneOffset UTC
public static final ZoneOffset MIN
public static final ZoneOffset MAX
public static ZoneOffset of(String offsetId)
ZoneOffset
的实例。
此方法解析返回一个实例的ZoneOffset
的字符串ID。 解析接受所产生的所有格式getId()
,再加上一些额外的格式:
Z
- UTC +h
+hh
+hh:mm
-hh:mm
+hhmm
-hhmm
+hh:mm:ss
-hh:mm:ss
+hhmmss
-hhmmss
返回的偏移量的ID将被归一化为getId()
描述的格式之一 。
最大支持范围为+18:00至-18:00。
offsetId
- 偏移ID,不为空
DateTimeException
- 如果偏移ID无效
public static ZoneOffset ofHours(int hours)
ZoneOffset
的实例,使用小时数的偏移量。
hours
- 以-18到+18为单位的时区偏移量
DateTimeException
- 如果偏移量不在所需范围内
public static ZoneOffset ofHoursMinutes(int hours, int minutes)
ZoneOffset
的实例,使用小时和分钟的偏移量。
小时和分钟组件的符号必须匹配。 因此,如果小时数是负数,则分钟必须为负或为零。 如果小时为零,分钟可能为正,负或零。
hours
- 以-18到+18为单位的时区偏移量
minutes
- 以分钟为单位的时区偏移量,从0到±59,表示符合小时数
DateTimeException
- 如果偏移量不在所需范围内
public static ZoneOffset ofHoursMinutesSeconds(int hours, int minutes, int seconds)
ZoneOffset
的实例,使用小时,分和秒的偏移量。
小时,分钟和秒组件的符号必须匹配。 因此,如果时间是负数,则分钟和秒必须为负或为零。
hours
- 以-18到+18为单位的时区偏移量
minutes
- 以分钟为单位的时区偏移量,从0到±59,符号匹配小时和秒
seconds
- 以秒为单位的时区偏移量,从0到±59,符号匹配小时和分钟
DateTimeException
- 如果偏移量不在所需范围内
public static ZoneOffset from(TemporalAccessor temporal)
ZoneOffset
的实例。
这获得了基于指定时间的偏移量。 A TemporalAccessor
表示一个任意的日期和时间信息集,该工厂转换为ZoneOffset
一个实例。
A TemporalAccessor
表示某种形式的日期和时间信息。 该工厂转换任意时间对象的实例ZoneOffset
。
转换使用TemporalQueries.offset()
查询,它依赖于提取OFFSET_SECONDS
字段。
该方法中,功能接口的签名相匹配TemporalQuery
允许它在通过方法参考,查询中使用ZoneOffset::from
。
temporal
- 要转换的时间对象,不为null
DateTimeException
- 如果无法转换为
ZoneOffset
public static ZoneOffset ofTotalSeconds(int totalSeconds)
ZoneOffset
的实例, ZoneOffset
总偏移量(以秒为单位)
偏移量必须在-18:00
到+18:00
,对应于-64800到+64800。
totalSeconds
- 以秒为单位的总时区偏移量,从-64800到+64800
DateTimeException
- 如果偏移量不在所需范围内
public int getTotalSeconds()
这是访问偏移量的主要方式。 它将小时,分钟和秒字段的总和返回为可以添加到一个时间的单个偏移量。
public String getId()
ID是偏移量的标准ISO-8601格式化字符串的微小变化。 有三种格式:
Z
- UTC(ISO-8601) +hh:mm
或-hh:mm
- 如果秒为零(ISO-8601) +hh:mm:ss
或-hh:mm:ss
- 如果秒不为零(不是ISO-8601) public ZoneRules getRules()
查询时,规则将始终返回此偏移量。 实现类是不可变的,线程安全的和可序列化的。
public boolean isSupported(TemporalField field)
这将检查是否可以查询指定字段的偏移量。 如果是false,那么调用range
和get
方法会抛出异常。
如果该字段是ChronoField
,那么在这里实现查询。 OFFSET_SECONDS
字段返回true。 所有其他ChronoField
实例将返回false。
如果该字段是不是一个ChronoField
,则此方法的结果是通过调用获得TemporalField.isSupportedBy(TemporalAccessor)
传递this
作为参数。 字段是否受支持由字段决定。
isSupported
在接口
TemporalAccessor
field
- 要检查的字段,null返回false
public ValueRange range(TemporalField field)
范围对象表示字段的最小和最大有效值。 该偏移量用于提高返回范围的精度。 如果不可能返回范围,因为该字段不受支持或出于某种其他原因,则抛出异常。
如果该字段是ChronoField
,那么在这里实现查询。 supported fields
将返回适当的范围实例。 所有其他ChronoField
实例都会抛出一个UnsupportedTemporalTypeException
。
如果该字段是不是一个ChronoField
,则此方法的结果是通过调用获得TemporalField.rangeRefinedBy(TemporalAccessor)
传递this
作为参数。 是否可以获得范围由字段确定。
range
在界面
TemporalAccessor
field
- 查询范围的字段,不为null
DateTimeException
- 如果无法获取字段的范围
UnsupportedTemporalTypeException
- 如果该字段不被支持
public int get(TemporalField field)
int
。
这将查询指定字段的值的偏移量。 返回的值将始终在该字段的值的有效范围内。 如果不可能返回值,因为该字段不受支持或出于某种其他原因,则抛出异常。
如果该字段是ChronoField
,那么查询在这里实现。 OFFSET_SECONDS
字段返回偏移量的值。 所有其他ChronoField
实例将抛出一个UnsupportedTemporalTypeException
。
如果该字段是不是一个ChronoField
,则此方法的结果是通过调用获得TemporalField.getFrom(TemporalAccessor)
传递this
作为参数。 该值是否可以获得,该值代表什么值由该字段决定。
get
在界面
TemporalAccessor
field
- 要获取的字段,不为空
DateTimeException
- 如果无法获取字段的值,或者该值超出了该字段的有效值的范围
UnsupportedTemporalTypeException
- 如果该字段不被支持或值的范围超过
int
ArithmeticException
- 如果发生数字溢出
public long getLong(TemporalField field)
long
。
这将查询指定字段的值的偏移量。 如果不可能返回值,因为该字段不受支持或出于某种其他原因,则抛出异常。
如果该字段是ChronoField
,那么在这里实现查询。 OFFSET_SECONDS
字段返回偏移量的值。 所有其他ChronoField
实例将抛出一个UnsupportedTemporalTypeException
。
如果该字段不是ChronoField
,则该方法的结果是通过调用TemporalField.getFrom(TemporalAccessor)
this
作为参数的this
获得的。 该值是否可以获得,该值代表什么值由该字段决定。
getLong
在界面
TemporalAccessor
field
- 要获取的字段,不为null
DateTimeException
- 如果无法获得该字段的值
UnsupportedTemporalTypeException
- 如果该字段不被支持
ArithmeticException
- 如果发生数字溢出
public <R> R query(TemporalQuery<R> query)
这使用指定的查询策略对象查询此偏移。 TemporalQuery
对象定义了用于获取结果的逻辑。 阅读查询的文档,以了解该方法的结果。
该方法的结果是通过调用TemporalQuery.queryFrom(TemporalAccessor)
方法获得的指定查询通过this
作为参数。
query
在界面
TemporalAccessor
R
- 结果的类型
query
- 要调用的查询,不为空
DateTimeException
- 如果无法查询(由查询定义)
ArithmeticException
- 如果发生数字溢出(由查询定义)
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
DateTimeException
- 如果不能进行调整
ArithmeticException
- 如果发生数字溢出
public int compareTo(ZoneOffset other)
这些偏移量按照它们在世界各地的同一时间发生的顺序进行比较。 因此, +10:00
的偏移量在+10:00
的偏移量+09:00
-18:00
。
比较为“符合等于”,由Comparable
定义。
compareTo
在界面
Comparable<ZoneOffset>
other
- 其他日期要比较,不为null
NullPointerException
- 如果
other
为空
public boolean equals(Object obj)
比较是基于偏移量(以秒为单位)。 这相当于ID的比较。
equals
在
ZoneId
obj
- 要检查的对象,null返回false
Object.hashCode()
, HashMap
public int hashCode()
hashCode
在类
ZoneId
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.