📅  最后修改于: 2023-12-03 14:42:53.951000             🧑  作者: Mango
getOffsetBefore()
方法是 Java 中 ZoneOffsetTransitionRule
类中的一个方法,用于获取指定时间之前的偏移量。
public ZoneOffset getOffsetBefore(Instant instant)
instant
:要查询偏移量的时间点,实例化为 Instant
对象。返回 ZoneOffset
对象,该对象表示 instant
参数之前的偏移量。
import java.time.*;
import java.time.zone.*;
public class Example {
public static void main(String[] args) {
ZoneId zone = ZoneId.of("America/New_York");
ZoneRules rules = zone.getRules();
ZoneOffsetTransition transition = rules.getTransition(LocalDateTime.of(2022, 3, 13, 2, 0, 0));
ZoneOffsetTransitionRule ruleBefore = transition.getPreviousRules();
Instant instant = transition.getInstant().minusSeconds(1);
ZoneOffset offsetBefore = ruleBefore.getOffsetBefore(instant);
System.out.println(offsetBefore); // 输出:-05:00
}
}
以上示例中,我们创建了 America/New_York
时区的 ZoneId
对象,并通过该对象获取到其 ZoneRules
对象。然后,我们使用 getTransition()
方法获取了指定时间点(即 2022 年 3 月 13 日凌晨 2 点)的区域转换信息,并通过 getPreviousRules()
方法获取了该转换之前的规则信息。
接着,我们通过 getInstant()
方法获取该转换的时间点,并使用 minusSeconds()
方法减去了 1 秒,以确保查询的时间点在转换之前。最后,我们使用 getOffsetBefore()
方法获取该时间点之前的偏移量,并将其打印输出。
输出结果为 -05:00
,即该时间点之前的偏移量为 5 小时。