- 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 ZoneOffsetMAX最大支持偏移量的常量。static ZoneOffsetMIN最小支持偏移量的常量。static ZoneOffsetUTCUTC的时区偏移量,ID为“Z”。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 TemporaladjustInto(Temporal temporal)调整指定的时态对象以使其具有与此对象相同的偏移量。intcompareTo(ZoneOffset other)将此偏移量按降序与另一个偏移量进行比较。booleanequals(Object obj)检查此偏移量是否等于另一个偏移量。static ZoneOffsetfrom(TemporalAccessor temporal)从时态对象获得ZoneOffset的实例。intget(TemporalField field)从此偏移量获取指定字段的值为int。StringgetId()获取规范化区域偏移ID。longgetLong(TemporalField field)从此偏移量获取指定字段的值为long。ZoneRulesgetRules()获取关联的时区规则。intgetTotalSeconds()获取以秒为单位的总区域偏移量。inthashCode()此偏移的哈希码。booleanisSupported(TemporalField field)检查是否支持指定的字段。static ZoneOffsetof(String offsetId)使用ID获取ZoneOffset的实例。static ZoneOffsetofHours(int hours)使用小时偏移量获得ZoneOffset的实例。static ZoneOffsetofHoursMinutes(int hours, int minutes)使用小时和分钟的偏移量获得ZoneOffset的实例。static ZoneOffsetofHoursMinutesSeconds(int hours, int minutes, int seconds)使用小时,分钟和秒的偏移量获得ZoneOffset的实例。static ZoneOffsetofTotalSeconds(int totalSeconds)获得ZoneOffset的实例,以秒为ZoneOffset指定总偏移量<R> Rquery(TemporalQuery<R> query)使用指定的查询查询此偏移量。ValueRangerange(TemporalField field)获取指定字段的有效值范围。StringtoString()使用标准化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)
-
-