中央ヨーロッパでは、現在のタイムゾーン(10月3日現在)は次のとおりです。
CEST / UTC + 2
しかしSimpleDateFormat
、Androidでインスタンスを作成すると...
dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
...CET / UTC+1
タイムゾーンとして返されます。したがって、現時点でまだ存在している必要があるDSTオフセットを無視しています。どうしてこれなの?
さらに、インスタンスの(現在は非推奨の)メソッドgetTimezoneOffset()
を使用するDate
と、一貫性のない結果が返されます。
(new Date()).getTimezoneOffset()
正しく-120(2時間)をdateTimeFormat.parse("2012-10-03T22:00:00.000+0000").getTimezoneOffset()
返し、-60(1時間)を返します。
これはどのように起こりますか?私は何か間違ったことをしていますか、それともこれは既知のバグですか?
注:より良い時間計算を提供するライブラリ(Joda Timeなど)があると聞きましたが、今ではかなり頻繁に聞いています;)しかし、いくつかの回避策を使用すると、組み込みのJava時間ライブラリを同じように簡単に使用できます。
そしてもちろん、私のマシンではタイムゾーンが正しく設定されています。