因此,我在java.time.ZoneId下使用getAvailableZoneIds()方法来获取可用时区列表。因此,我想知道对于特定时区(例如“ America / Chicago”)是否存在某种方式,我可以找出一年中的夏时制的开始和结束日期时间详细信息。就像它何时开始和结束。尽管通过Java获得了包括ZoneId,ZonedDateTime,ZoneOffset,TimeZone在内的各种类,但找不到任何可以获取此详细信息的方法。
我尝试了下面的代码,并给出了下面提到的输出
ZoneId zoneId= ZoneId.of("America/Sao_Paulo");
ZoneRules zoneRules = zoneId.getRules();
System.out.println("previous Transition of DST ==> " + zoneRules.previousTransition(Instant.now()));
System.out.println("next Transition of DST ==> " + zoneRules.nextTransition(Instant.now()));
输出:
previous Transition of DST ==> Transition[Overlap at 2019-02-17T00:00-02:00 to -03:00]
next Transition of DST ==> Transition[Gap at 2019-11-03T00:00-03:00 to -02:00]
但是我需要找出特定年份的开始时间和结束时间。
谢谢-山姆
对于特定年份,您可以给ZoneRules
一年。对于任何给定的时刻,您都可以询问next或previous ZoneOffsetTransition
。
ZoneOffsetTransition