Java の ZonedDateTime ライブラリを使用して、標準タイムゾーン リスト (Olson タイムゾーン データベース) から任意のタイムゾーンの 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 オフセットに変換するためのより信頼性の高いライブラリがありますか?
注: olson ID リスト