- 所有已实现的接口:
Serializable,Comparable<ZoneOffset>,TemporalAccessor,TemporalAdjuster
+02:00 。
时区偏移量是时区不同于格林威治/UTC 的时间量。这通常是固定的小时数和分钟数。
世界不同地区有不同的时区偏差。在 ZoneId 类中捕获了偏移量如何随地点和一年中的时间变化的规则。
例如,巴黎在冬季比格林威治/UTC 早一小时,在夏季比格林威治/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类;程序员应该将 equal 的实例视为可互换的,并且不应使用实例进行同步,否则可能会发生不可预测的行为。例如,在未来的版本中,同步可能会失败。 equals 方法应该用于比较。
- 实现要求:
- 这个类是不可变的和线程安全的。
- 自从:
- 1.8
- 参见:
-
字段摘要
字段修饰符和类型Field描述static final ZoneOffset支持的最大偏移量的常量。static final ZoneOffset支持的最小偏移量的常量。static final ZoneOffsetUTC 的时区偏移量,ID 为“Z”。 -
方法总结
修饰符和类型方法描述adjustInto(Temporal temporal) 调整指定的时间对象以与此对象具有相同的偏移量。intcompareTo(ZoneOffset other) 按降序将此偏移量与另一个偏移量进行比较。boolean检查此偏移量是否等于另一个偏移量。static ZoneOffsetfrom(TemporalAccessor temporal) 从时间对象中获取ZoneOffset的实例。intget(TemporalField field) 从此偏移量获取指定字段的值作为int。getId()获取规范化区域偏移 ID。longgetLong(TemporalField field) 从此偏移量获取指定字段的值作为long。getRules()获取关联的时区规则。int以秒为单位获取总区域偏移量。inthashCode()此偏移量的哈希码。booleanisSupported(TemporalField field) 检查是否支持指定的字段。static ZoneOffset使用 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的实例,以秒为单位指定总偏移量<R> Rquery(TemporalQuery<R> query) 使用指定的查询查询此偏移量。range(TemporalField field) 获取指定字段的有效值范围。toString()使用规范化 ID 将此偏移量输出为String。在类 java.time.ZoneId 中声明的方法
getAvailableZoneIds, getDisplayName, normalized, of, ofOffset, systemDefault
-
字段详细信息
-
UTC
UTC 的时区偏移量,ID 为“Z”。 -
MIN
支持的最小偏移量的常量。 -
MAX
支持的最大偏移量的常量。
-
-
方法详情
-
of
使用 ID 获取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 无效
-
ofHours
使用以小时为单位的偏移量获取ZoneOffset的实例。- 参数:
hours- 以小时为单位的时区偏移量,从 -18 到 +18- 返回:
- 区域偏移量,不为空
- 抛出:
DateTimeException- 如果偏移量不在要求的范围内
-
ofHoursMinutes
使用以小时和分钟为单位的偏移量获取ZoneOffset的实例。小时和分钟组件的符号必须匹配。因此,如果小时数为负数,则分钟数必须为负数或零。如果小时数为零,则分钟数可能为正数、负数或零。
- 参数:
hours- 以小时为单位的时区偏移量,从 -18 到 +18minutes- 以分钟为单位的时区偏移量,从 0 到 ±59,符号匹配小时- 返回:
- 区域偏移量,不为空
- 抛出:
DateTimeException- 如果偏移量不在要求的范围内
-
ofHoursMinutesSeconds
使用以小时、分钟和秒为单位的偏移量获取ZoneOffset的实例。小时、分钟和秒组件的符号必须匹配。因此,如果小时为负数,则分钟和秒数必须为负数或零。
- 参数:
hours- 以小时为单位的时区偏移量,从 -18 到 +18minutes- 以分钟为单位的时区偏移量,从 0 到 ±59,符号匹配小时和秒seconds- 以秒为单位的时区偏移量,从 0 到 ±59,符号匹配小时和分钟- 返回:
- 区域偏移量,不为空
- 抛出:
DateTimeException- 如果偏移量不在要求的范围内
-
from
从时间对象中获取ZoneOffset的实例。这将根据指定的时间获得偏移量。
TemporalAccessor表示一组任意的日期和时间信息,该工厂将其转换为ZoneOffset的一个实例。TemporalAccessor代表某种形式的日期和时间信息。该工厂将任意时间对象转换为ZoneOffset的实例。转换使用
TemporalQueries.offset()查询,它依赖于提取OFFSET_SECONDS字段。此方法与功能接口
TemporalQuery的签名相匹配,允许它通过方法参考ZoneOffset::from用作查询。- 参数:
temporal- 要转换的时间对象,不为空- 返回:
- 区域偏移量,不为空
- 抛出:
DateTimeException- 如果无法转换为ZoneOffset
-
ofTotalSeconds
获取ZoneOffset的实例,以秒为单位指定总偏移量偏移量必须在
-18:00到+18:00范围内,对应于 -64800 到 +64800。- 参数:
totalSeconds- 以秒为单位的总时区偏移量,从 -64800 到 +64800- 返回:
- ZoneOffset,不为空
- 抛出:
DateTimeException- 如果偏移量不在要求的范围内
-
getTotalSeconds
public int getTotalSeconds()以秒为单位获取总区域偏移量。这是访问偏移量的主要方式。它返回小时、分钟和秒字段的总和作为可以添加到时间的单个偏移量。
- 返回:
- 以秒为单位的总区域偏移量
-
getId
获取规范化区域偏移 ID。ID 与标准 ISO-8601 格式的偏移量字符串略有不同。共有三种格式:
Z- 用于 UTC (ISO-8601)+hh:mm或-hh:mm- 如果秒数为零 (ISO-8601)+hh:mm:ss或-hh:mm:ss- 如果秒数不为零(不是 ISO-8601)
-
getRules
获取关联的时区规则。查询时,规则将始终返回此偏移量。实现类是不可变的、线程安全的和可序列化的。
-
isSupported
检查是否支持指定的字段。这将检查是否可以为指定字段查询此偏移量。如果为 false,则调用
range和get方法将抛出异常。如果该字段是一个
ChronoField那么查询就在这里实现。OFFSET_SECONDS字段返回 true。所有其他ChronoField实例将返回 false。如果该字段不是
ChronoField,则通过调用TemporalField.isSupportedBy(TemporalAccessor)传递this作为参数来获得此方法的结果。字段是否支持由字段决定。- 指定者:
isSupported在接口TemporalAccessor中- 参数:
field- 要检查的字段,null 返回 false- 返回:
- 如果此偏移量支持该字段,则为 true,否则为 false
-
range
获取指定字段的有效值范围。范围对象表示字段的最小和最大有效值。此偏移量用于提高返回范围的准确性。如果由于不支持该字段或其他原因而无法返回范围,则会抛出异常。
如果该字段是一个
ChronoField那么查询就在这里实现。supported fields将返回适当的范围实例。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException。如果该字段不是
ChronoField,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)传递this作为参数来获得此方法的结果。能否获取范围由字段决定。- 指定者:
range在接口TemporalAccessor中- 参数:
field- 查询范围的字段,不为空- 返回:
- 该字段的有效值范围,不为空
- 抛出:
DateTimeException- 如果无法获得该字段的范围UnsupportedTemporalTypeException- 如果不支持该字段
-
get
从此偏移量获取指定字段的值作为int。这将查询此偏移量以获取指定字段的值。返回值将始终在该字段的有效值范围内。如果由于不支持该字段或其他原因而无法返回该值,则会抛出异常。
如果该字段是一个
ChronoField那么查询就在这里实现。OFFSET_SECONDS字段返回偏移量的值。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException。如果该字段不是
ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)传递this作为参数来获得此方法的结果。能否获取到该值,该值代表什么,由字段决定。- 指定者:
get在接口TemporalAccessor中- 参数:
field- 要获取的字段,不为空- 返回:
- 该字段的值
- 抛出:
DateTimeException- 如果无法获取该字段的值或该值超出该字段的有效值范围UnsupportedTemporalTypeException- 如果不支持该字段或值的范围超过intArithmeticException- 如果发生数字溢出
-
getLong
从此偏移量获取指定字段的值作为long。这将查询此偏移量以获取指定字段的值。如果由于不支持该字段或其他原因而无法返回该值,则会抛出异常。
如果该字段是一个
ChronoField那么查询就在这里实现。OFFSET_SECONDS字段返回偏移量的值。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException。如果该字段不是
ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)传递this作为参数来获得此方法的结果。能否获取到该值,该值代表什么,由字段决定。- 指定者:
getLong在接口TemporalAccessor中- 参数:
field- 要获取的字段,不为空- 返回:
- 该字段的值
- 抛出:
DateTimeException- 如果无法获得该字段的值UnsupportedTemporalTypeException- 如果不支持该字段ArithmeticException- 如果发生数字溢出
-
query
使用指定的查询查询此偏移量。这使用指定的查询策略对象查询此偏移量。
TemporalQuery对象定义了用于获取结果的逻辑。阅读查询文档以了解此方法的结果。此方法的结果是通过对指定查询调用
TemporalQuery.queryFrom(TemporalAccessor)方法并将this作为参数传递来获得的。- 指定者:
query在接口TemporalAccessor中- 类型参数:
R- 结果的类型- 参数:
query- 要调用的查询,不为空- 返回:
- 查询结果,可能返回null(由查询定义)
- 抛出:
DateTimeException- 如果无法查询(由查询定义)ArithmeticException- 如果发生数字溢出(由查询定义)
-
adjustInto
调整指定的时间对象以与此对象具有相同的偏移量。这将返回一个与输入具有相同可观察类型的时间对象,偏移量更改为与此相同。
调整相当于使用
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- 要调整的目标对象,不为空- 返回:
- 调整后的对象,不为空
- 抛出:
DateTimeException- 如果无法进行调整ArithmeticException- 如果发生数字溢出
-
compareTo
按降序将此偏移量与另一个偏移量进行比较。偏移量按照它们在一天中的同一时间在世界各地发生的顺序进行比较。因此,
+10:00的偏移量出现在+09:00的偏移量之前,依此类推直到-18:00。如
Comparable所定义,比较是“与等于一致”。- 指定者:
compareTo在接口Comparable<ZoneOffset>中- 参数:
other- 要比较的其他日期,不为空- 返回:
- 比较值,小于则为负,大于则为正
- 抛出:
NullPointerException- 如果other为空
-
equals
检查此偏移量是否等于另一个偏移量。比较基于以秒为单位的偏移量。这相当于通过ID进行比较。
-
hashCode
public int hashCode()此偏移量的哈希码。 -
toString
使用规范化 ID 将此偏移量输出为String。
-