JavaのZonedDateTimeライブラリを使用して、標準タイムゾーンリスト(Olsonタイムゾーンデータベース)からタイムゾーンのUTCオフセットを取得しています。ZonedDateTimeが正しくないUTCオフセット値を返します
ここに私の簡単なコードです。
For Europe/Istanbul, UTC2.0
For America/Caracas, UTC-4.5
我々は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);
}
}
そして、これらの出力があるが、正しいですが、イスタンブールのそれは実際には3ですが、それは間違っている2通りの出力が得られます。 このJavaライブラリの動作方法にいくつか変更がありましたか?または、olson IDをUTCオフセットに変換するためのより信頼性の高いライブラリがありますか?
これは問題です。イスタンブールに夏時間がない場合でも、この図書館ではまだ検討中です。これを修正する方法はありますか?あるいは別のライブラリに切り替える必要がありますか? –
ああ、私はトルコがDSTを削ったことを知らなかった(彼らにはいい!)。その後、指示は[ここに]与えられている(http://stackoverflow.com/a/40401351/5899161) – lukeg