📌  相关文章
📜  Java中的 ZoneOffsetTransitionRule getOffsetBefore() 方法与示例(1)

📅  最后修改于: 2023-12-03 14:42:53.951000             🧑  作者: Mango

Java中的 ZoneOffsetTransitionRule getOffsetBefore() 方法与示例

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 小时。