- 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
- 另请参见:
- Serialized Form
-
-
字段汇总
字段 变量和类型 字段 描述 static ZoneOffset
MAX
最大支持偏移量的常量。static ZoneOffset
MIN
最小支持偏移量的常量。static ZoneOffset
UTC
UTC的时区偏移量,ID为“Z”。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 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()
使用标准化ID将此偏移量输出为String
。-
声明方法的类 java.time.ZoneId
getAvailableZoneIds, getDisplayName, normalized, of, ofOffset, systemDefault
-
-
-
-
字段详细信息
-
UTC
public static final ZoneOffset UTC
UTC的时区偏移量,ID为“Z”。
-
MIN
public static final ZoneOffset MIN
最小支持偏移量的常量。
-
MAX
public static final ZoneOffset MAX
最大支持偏移量的常量。
-
-
方法详细信息
-
of
public static ZoneOffset of(String offsetId)
使用ID获得ZoneOffset
的实例。此方法解析
ZoneOffset
的字符串ID以返回实例。 解析接受getId()
生成的所有格式,以及一些其他格式:-
Z
- 适用于UTC -
+h
-
+hh
-
+hh:mm
-
-hh:mm
-
+hhmm
-
-hhmm
-
+hh:mm:ss
-
-hh:mm:ss
-
+hhmmss
-
-hhmmss
支持的最大范围为+18:00至-18:00(含)。
- 参数
-
offsetId
- 偏移ID,不为空 - 结果
- zone-offset,not null
- 异常
-
DateTimeException
- 如果偏移ID无效
-
-
ofHours
public static ZoneOffset ofHours(int hours)
使用小时偏移量获得ZoneOffset
的实例。- 参数
-
hours
- 以小时为单位的时区偏移量,从-18到+18 - 结果
- zone-offset,not null
- 异常
-
DateTimeException
- 如果偏移量不在要求的范围内
-
ofHoursMinutes
public static ZoneOffset ofHoursMinutes(int hours, int minutes)
使用小时和分钟的偏移量获得ZoneOffset
的实例。小时和分钟组件的符号必须匹配。 因此,如果小时为负,则分钟必须为负或零。 如果小时为零,则分钟可以是正数,负数或零。
- 参数
-
hours
- 以小时为单位的时区偏移量,从-18到+18 -
minutes
- 以分钟为单位的时区偏移量,从0到±59,符号匹配小时 - 结果
- zone-offset,not null
- 异常
-
DateTimeException
- 如果偏移量不在要求的范围内
-
ofHoursMinutesSeconds
public static ZoneOffset ofHoursMinutesSeconds(int hours, int minutes, int seconds)
使用小时,分钟和秒的偏移量获得ZoneOffset
的实例。小时,分钟和秒组件的符号必须匹配。 因此,如果小时为负,则分钟和秒必须为负或零。
- 参数
-
hours
- 以小时为单位的时区偏移,从-18到+18 -
minutes
- 以分钟为单位的时区偏移量,从0到±59,符号匹配小时和秒 -
seconds
- 以秒为单位的时区偏移量,从0到±59,符号匹配小时和分钟 - 结果
- zone-offset,not null
- 异常
-
DateTimeException
- 如果偏移量不在要求的范围内
-
from
public static ZoneOffset from(TemporalAccessor temporal)
从时态对象获得ZoneOffset
的实例。这基于指定的时间获得偏移。
TemporalAccessor
表示一组任意日期和时间信息,该工厂将其转换为ZoneOffset
的实例。TemporalAccessor
代表某种形式的日期和时间信息。 此工厂将任意时间对象转换为ZoneOffset
的实例。转换使用
TemporalQueries.offset()
查询,该查询依赖于提取OFFSET_SECONDS
字段。此方法匹配功能接口
TemporalQuery
的签名,允许通过方法引用ZoneOffset::from
将其用作查询。- 参数
-
temporal
- 要转换的临时对象,而不是null - 结果
- zone-offset,not null
- 异常
-
DateTimeException
- 如果无法转换为ZoneOffset
-
ofTotalSeconds
public static ZoneOffset ofTotalSeconds(int totalSeconds)
获得ZoneOffset
的实例,以秒为ZoneOffset
指定总偏移量偏移量必须在
-18:00
到+18:00
范围内,对应于-64800到+64800。- 参数
-
totalSeconds
- 以秒为单位的总时区偏移量,从-64800到+64800 - 结果
- ZoneOffset,不为null
- 异常
-
DateTimeException
- 如果偏移量不在要求的范围内
-
getTotalSeconds
public int getTotalSeconds()
获取以秒为单位的总区域偏移量。这是访问偏移量的主要方式。 它将小时,分钟和秒字段的总和作为可添加到时间的单个偏移量返回。
- 结果
- 以秒为单位的总区域偏移量
-
getId
public String getId()
获取规范化区域偏移ID。ID是偏移的标准ISO-8601格式字符串的微小变化。 有三种格式:
-
Z
- for 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
作为参数来获得此方法的结果。 字段是否受支持由字段确定。- Specified by:
-
isSupported
在界面TemporalAccessor
- 参数
-
字段
- 要检查的字段,null返回false - 结果
- 如果此偏移量支持该字段,则返回true,否则返回false
-
range
public ValueRange range(TemporalField field)
获取指定字段的有效值范围。范围对象表示字段的最小和最大有效值。 此偏移用于增强返回范围的准确性。 如果无法返回范围,因为不支持该字段或由于某些其他原因,将引发异常。
如果该字段是
ChronoField
,则在此处实现查询。supported fields
将返回适当的范围实例。 所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段不是
ChronoField
,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)
传递this
作为参数来获得此方法的结果。 是否可以获得范围由该字段确定。- Specified by:
-
range
在界面TemporalAccessor
- 参数
-
字段
- 要查询范围的字段,而不是null - 结果
- 字段的有效值范围,不为null
- 异常
-
DateTimeException
- 如果无法获得该字段的范围 -
UnsupportedTemporalTypeException
- 如果不支持该字段
-
get
public int get(TemporalField field)
从此偏移量获取指定字段的值,如int
。这将查询此偏移量以获取指定字段的值。 返回的值将始终在该字段的有效值范围内。 如果无法返回该值,因为不支持该字段或由于某些其他原因,将引发异常。
如果该字段是
ChronoField
,则在此处执行查询。OFFSET_SECONDS
字段返回偏移量的值。 所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段是不是一个
ChronoField
,则此方法的结果是通过调用获得TemporalField.getFrom(TemporalAccessor)
传递this
作为参数。 是否可以获得该值以及该值表示的值由该字段确定。- Specified by:
-
get
在界面TemporalAccessor
- 参数
-
字段
- 要获取的字段,而不是null - 结果
- 该字段的值
- 异常
-
DateTimeException
- 如果无法获取该字段的值或该值超出该字段的有效值范围 -
UnsupportedTemporalTypeException
- 如果不支持该字段或值的范围超过int
-
ArithmeticException
- 如果发生数字溢出
-
getLong
public long getLong(TemporalField field)
从此偏移量获取指定字段的值为long
。这将查询此偏移量以获取指定字段的值。 如果无法返回该值,因为不支持该字段或由于某些其他原因,将引发异常。
如果该字段是
ChronoField
,则在此处执行查询。OFFSET_SECONDS
字段返回偏移量的值。 所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段是不是一个
ChronoField
,则此方法的结果是通过调用获得TemporalField.getFrom(TemporalAccessor)
传递this
作为参数。 是否可以获得该值以及该值表示的值由该字段确定。- Specified by:
-
getLong
在界面TemporalAccessor
- 参数
-
字段
- 要获取的字段,而不是null - 结果
- 该字段的值
- 异常
-
DateTimeException
- 如果无法获得该字段的值 -
UnsupportedTemporalTypeException
- 如果不支持该字段 -
ArithmeticException
- 如果发生数字溢出
-
query
public <R> R query(TemporalQuery<R> query)
使用指定的查询查询此偏移量。这将使用指定的查询策略对象查询此偏移量。
TemporalQuery
对象定义用于获取结果的逻辑。 阅读查询文档以了解此方法的结果。此方法的结果是通过调用获得
TemporalQuery.queryFrom(TemporalAccessor)
在经过指定的查询方法this
作为参数。- Specified by:
-
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);
此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
adjustInto
在界面TemporalAdjuster
- 参数
-
temporal
- 要调整的目标对象,而不是null - 结果
- 调整后的对象,不为空
- 异常
-
DateTimeException
- 如果无法进行调整 -
ArithmeticException
- 如果发生数字溢出
-
compareTo
public int compareTo(ZoneOffset other)
将此偏移量按降序与另一个偏移量进行比较。偏移量按它们在世界各地的同一时间发生的顺序进行比较。 因此,偏移量为
+10:00
之前的偏移量为+09:00
,依此类推至-18:00
。比较是“与equals一致”,如
Comparable
所定义。- Specified by:
-
compareTo
在界面Comparable<ZoneOffset>
- 参数
-
other
- 要比较的其他日期,而不是null - 结果
- 比较器值,如果更小则为负,如果更大则为正
- 异常
-
NullPointerException
- 如果other
为空
-
equals
public boolean equals(Object obj)
检查此偏移量是否等于另一个偏移量。比较基于以秒为单位的偏移量。 这相当于ID的比较。
- 重写:
-
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)
-
-