ZoneId.of("Australia/ACT").getRules().getOffset(LocalDateTime.of(2019, 03, 31, 13, 0, 0, 0))
返回
+11:00
,其中哪个似乎不正确
我希望补偿+10:30。
答案 0 :(得分:3)
Australia/ACT
是IANA database (tzdata)中不推荐使用的旧名称,不引用Australian Central Time。相反,它指向Australian Capital Territory,与Sydney在同一时区。
尝试Australia/Adelaide
或Australia/Broken_Hill
来参考Australian Central Time的时区。
示例代码。
LocalDateTime ldt = LocalDateTime.of ( 2019 , 03 , 31 , 13 , 0 , 0 , 0 );
System.out.println ( "Offsets for: " + ldt );
List < ZoneId > zones =
List.of (
ZoneId.of ( "Australia/Adelaide" ) ,
ZoneId.of ( "Australia/Broken_Hill" )
)
;
for ( ZoneId zone : zones )
{
ZoneOffset offset = zone.getRules ().getOffset ( ldt );
System.out.println ( "zone: " + zone.toString () + " has offset: " + offset.toString () );
}
在Java 13中运行(来自AdoptOpenJDK):
2019年3月31日13:00的偏移量
区域:澳大利亚/阿德莱德的偏移量:+10:30
区域:Australia / Broken_Hill具有偏移量:+10:30
提示:有关实时区域的完整列表,请查阅tzdata的新副本。尽管列表可能已过时,但更方便地咨询Wikipedia for a list of time zones。