我正在使用 Java 中的 ZonedDateTime 库从标准时区列表(奥尔森时区数据库)中检索任何时区的 UTC 偏移量。
这是我的简单代码。
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class HelloWorld{
public static void main(String []args){
displayUtcOffset("Europe/Istanbul");
displayUtcOffset("America/Caracas");
}
public static void displayUtcOffset(String olsonId){
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of(olsonId));
float utcOffset = zonedDateTime.getOffset().getTotalSeconds()/3600f;
System.out.println("For "+olsonId+", UTC"+utcOffset);
}
}
这些的输出是,
For Europe/Istanbul, UTC2.0
For America/Caracas, UTC-4.5
正如我们所见,加拉加斯的 UTC 偏移量是正确的,但伊斯坦布尔的偏移量实际上是 +3,但它给出的输出为 +2,这是不正确的。这个 java 库的工作方式是否发生了一些变化?还是有更可靠的库来将 olson Id 转换为 UTC 偏移量?