定义区域偏移如何针对单个时区变化的规则。
规则为时区的所有历史和未来过渡建模。
可以在多个区域ID之间内部共享相同的规则。
序列化ZoneRules的实例将存储整个规则集。 它不存储区域ID,因为它不是此对象状态的一部分。
规则实现可以存储或不存储关于历史和未来转换的完整信息,并且存储的信息仅与规则提供者提供给实现的信息一样准确。 应用程序应将提供的数据视为代表执行此规则的最佳信息。
检查这组规则是否等于另一组规则。
获取此区域中指定时刻使用的夏令时量。
获取这些规则中指定时刻适用的偏移量。
获取这些规则中指定的本地日期时间的合适偏移量。
获取此区域中指定时刻的标准偏移量。
获取这些规则中指定的本地日期时间适用的偏移转换。
获取超出转换列表中定义的转换规则的年份列表。
获取完全定义的转换的完整列表。
获取这些规则中指定的本地日期时间适用的偏移量。
给定
#equals的定义,返回合适的哈希码。
检查指定的瞬间是否在夏令时中。
区域规则的检查是固定的,因此偏移量不会变化。
检查偏移日期时间是否对这些规则有效。
获取指定时刻之后的下一个转换。
获得具有固定区域规则的ZoneRules实例。
获得ZoneRules的实例。
获取指定时刻之前的上一个转换。
返回描述此对象的字符串。
获得ZoneRules的实例。
获得具有固定区域规则的ZoneRules实例。
区域规则的检查是固定的,因此偏移量不会变化。
获取这些规则中指定时刻适用的偏移量。
从瞬间到偏移的映射很简单,每个瞬间只有一个有效偏移。 此方法返回该偏移量。
获取这些规则中指定的本地日期时间的合适偏移量。
从本地日期时间到偏移的映射并不简单。 有三种情况:
正常,有一个有效的偏移量。 对于一年中的绝大多数情况,正常情况适用,其中本地日期时间有一个有效的偏移量。
差距,零有效偏移。 这是因为春天夏令时从“冬天”变为“夏天”,时钟向前跳跃。 在间隙中,存在没有有效偏移的本地日期时间值。
重叠,有两个有效的偏移量。 这是因为秋季夏令时从“夏季”变为“冬季”,因此时钟被缩回。 在重叠中,存在具有两个有效偏移的本地日期时间值。
因此,对于任何给定的本地日期时间,可以存在零个,一个或两个有效偏移。
此方法返回Normal情况下的单个偏移量,在Gap或Overlap情况下,它返回转换前的偏移量。
因为,在Gap和Overlap的情况下,返回的偏移量是“最佳”值,而不是“正确”值,应该小心处理。
获取这些规则中指定的本地日期时间适用的偏移量。
从本地日期时间到偏移的映射并不简单。 有三种情况:
正常,有一个有效的偏移量。 对于一年中的绝大多数情况,正常情况适用,其中本地日期时间有一个有效的偏移量。
差距,零有效偏移。 这是因为春天夏令时从“冬天”变为“夏天”,时钟向前跳跃。 在间隙中,存在没有有效偏移的本地日期时间值。
重叠,有两个有效的偏移量。 这是因为秋季夏令时从“夏季”变为“冬季”,因此时钟被缩回。 在重叠中,存在具有两个有效偏移的本地日期时间值。
因此,对于任何给定的本地日期时间,可以存在零个,一个或两个有效偏移。
此方法返回有效偏移列表,该列表的大小为0,1或2.如果有两个偏移量,则在索引0处返回较早的偏移量,在索引1处返回较晚的偏移量。
有多种方法可以处理LocalDateTime的转换。 使用这种方法的一种技术是:
List validOffsets = rules.getOffset(localDT);
if (validOffsets.size() == 1) {
// Normal case: only one valid offset
zoneOffset = validOffsets.get(0);
} else {
// Gap or Overlap: determine what to do from transition (which will be non-null)
ZoneOffsetTransition trans = rules.getTransition(localDT);
}
理论上,有可能存在两个以上的有效偏移。 如果时钟要快速连续放回一次,就会发生这种情况。 这在时区的历史上从未发生过,因此没有特别的处理。 但是,如果它发生,那么列表将返回超过2个条目。
获取这些规则中指定的本地日期时间适用的偏移转换。
从本地日期时间到偏移的映射并不简单。 有三种情况:
正常,有一个有效的偏移量。 对于一年中的绝大多数情况,正常情况适用,其中本地日期时间有一个有效的偏移量。
差距,零有效偏移。 这是因为春天夏令时从“冬天”变为“夏天”,时钟向前跳跃。 在间隙中,存在没有有效偏移的本地日期时间值。
重叠,有两个有效的偏移量。 这是因为秋季夏令时从“夏季”变为“冬季”,因此时钟被缩回。 在重叠中,存在具有两个有效偏移的本地日期时间值。
转换用于模拟Gap或重叠的情况。
Normal情况将返回null。
有多种方法可以处理LocalDateTime的转换。 使用这种方法的一种技术是:
ZoneOffsetTransition trans = rules.getTransition(localDT);
if (trans != null) {
// Gap or Overlap: determine what to do from transition
} else {
// Normal case: only one valid offset
zoneOffset = rule.getOffset(localDT);
}
获取此区域中指定时刻的标准偏移量。
这样可以访问标准偏移量随时间变化的历史信息。 标准偏移是应用任何夏令时之前的偏移。 这通常是冬季适用的偏移量。
获取此区域中指定时刻使用的夏令时量。
这样可以访问有关夏令时数量随时间变化的历史信息。 这是标准偏移和实际偏移之间的差异。 通常,冬季为零,夏季为一小时。 时区是基于秒的,因此持续时间的纳秒部分将为零。
此默认实现计算actual和standard偏移的持续时间。
检查指定的瞬间是否在夏令时中。
这将检查指定时刻的标准偏移和实际偏移是否相同。 如果不是,则假设夏令时正在运行。
检查偏移日期时间是否对这些规则有效。
为了有效,本地日期时间不得在间隙中,并且偏移量必须与其中一个有效偏移量匹配。
获取指定时刻之后的下一个转换。
这将返回指定时刻之后的下一个转换的详细信息。 例如,如果瞬间表示应用“夏季”夏令时的点,则该方法将返回到下一个“冬季”时间的过渡。
获取指定时刻之前的上一个转换。
这将返回指定时刻之前的前一个转换的详细信息。 例如,如果瞬间表示应用“夏季”夏令时的点,则该方法将返回从先前“冬季”时间的转变。
获取完全定义的转换的完整列表。
此方法返回已完全定义的转换。 这些通常是历史性的,但可能在未来。
对于固定偏移规则以及仅存在单个偏移的任何时区,该列表将为空。 如果转换规则未知,则列表也将为空。
获取超出转换列表中定义的转换规则的年份列表。
对于任何给定的ZoneRules ,此列表包含超出那些已完全定义的年份的过渡规则。 这些规则通常指未来的夏令时规则更改。
如果区域定义了将来的夏令时,则列表通常为2,并保存有关进入和退出夏令时的信息。 如果区域没有夏令时,或者有关未来更改的信息不确定,则列表将为空。
对于固定偏移规则以及没有夏令时的任何时区,列表将为空。 如果转换规则未知,则列表也将为空。
检查这组规则是否等于另一组规则。
如果两个规则集对于任何给定的输入瞬间或本地日期时间总是会产生相同的输出,则它们是相等的。 来自两个不同组的规则可能会返回false,即使它们实际上是相同的。
该定义应该导致实现比较它们的整个状态。
给定
#equals的定义,返回合适的哈希码。
返回描述此对象的字符串。
变量和类型
方法
描述
boolean
Object otherRules)
检查这组规则是否等于另一组规则。
获取这些规则中指定时刻适用的偏移量。
获取这些规则中指定的本地日期时间的合适偏移量。
int
给定
#equals的定义,返回合适的哈希码。
boolean
检查指定的瞬间是否在夏令时中。
boolean
区域规则的检查是固定的,因此偏移量不会变化。
boolean
检查偏移日期时间是否对这些规则有效。
获得具有固定区域规则的ZoneRules实例。
ZoneOffset baseStandardOffset, ZoneOffset baseWallOffset, List standardOffsetTransitionList, List transitionList, List lastRules)
获得ZoneRules的实例。
返回描述此对象的字符串。