Calendar.getInstance(TimeZone.getTimeZone("GMT+1")).get(Calendar.HOUR_OF_DAY)
は、時間が「遅い」(夏時間+1時間を検出しない可能性があるため)。J2SEでは、利用可能なタイムゾーンが多数あります(ヨーロッパ/ブダペストも完璧に動作しますが)J2MEにはGTMとUTCしかありません。
"正しい"時間を取得するにはどうすればよいですか?(カレンダー)時刻が正しい時刻を返さない
1
A
答えて
1
3
固定タイムゾーンに「GMT + 1」を要求しました。夏時間は適用されません。夏時間の適用が必要で、J2MEがDSTタイムゾーンを提供しない場合は、自分自身でロジックを調整する必要があります:(
つまり、J2MEが正しく動作するように聞こえますがあなたが望む機能をサポートしていません)。
1
私はちょうど全く異なるアプリケーションでこの問題を抱えていました。それはモバイルアプリケーションでしたが、私の考え方ではパラダイムの問題であることが判明しました。プログラム上の問題です...これはあなたと同じ問題であるかと思います。
現在イギリスは英国夏時間にありますので、GMTとは現在イギリスにいる時間ですこれは必ずしもGMTではない。 BSTはGMT + 1です(あなたの場所と夏時間の使用の有無によって)問題を引き起こす可能性があります。 GMTが1日遅れている場合、これも日付に影響します。
例えば、私は現在現在GMT-4であるトロントにいるが、ロンドンの5時間後に私に大きな混乱を引き起こしている。私は混乱に加わったのは、私がからまで英国だからだと思うので、私はいつもそうではないGMT-5として時間を自動的に考える。ロンドンタイムは現在GMT + 1で、ロンドン-5はGMT-4です。私は自分の携帯電話にTimeZone.getDefault()
で試してみたし、それが働いた:)(ただし、エミュレータ上で時間が2時間で「遅い」だった:S)
は*すべての*タイムゾーンが固定されていませんか?夏の間はタイムゾーンを変更するだけで、その時間帯内の時間は移動しません。 – BenAlabaster
@balabaster:いいえ、タイムゾーンは変更しません。私たちのタイムゾーンはUTCオフセットを変更します。たとえば、Olsen ID「Europe/London」のタイムゾーンにいます。冬はUTC + 0、夏はUTC + 1です。 –
(少なくとも私が使用したすべての感知可能なタイムゾーンAPI内で:) –