1

からGMT +1を回復する方法を知りたいですjava.util.TimeZone。たとえば、値がGMT +1またはGMTTimeZone.getTimeZone("Europe/Madrid")であることを知りたいとします。TimeZone.getTimeZone("Atlantic/Canary")

4

3 に答える 3

3

質問にはすでに回答済みですが、Joda Date Time APIを使用することをお勧めします。これは非常に強力で、JDK の Date および Time クラスにあったすべての制限をカバーしています。

乾杯

于 2013-07-26T08:25:09.530 に答える
2

メソッドを使用できますgetOffset。この方法では、long date夏時間などを考慮する必要があります。

public static void main(String[] args) throws Exception {
    final TimeZone madrid = TimeZone.getTimeZone("Europe/Madrid");
    final TimeZone canaries = TimeZone.getTimeZone("Atlantic/Canary");
    final long now = System.currentTimeMillis();

    System.out.println(madrid.getOffset(now));
    System.out.println(canaries.getOffset(now));
}

ご覧のとおり、これはオフセットをミリ単位で返します

7200000
3600000

次に、使用TimeUnitして時間に変換できます。

System.out.println(TimeUnit.MILLISECONDS.toHours(madrid.getOffset(now)));
System.out.println(TimeUnit.MILLISECONDS.toHours(canaries.getOffset(now)));

出力:

2
1
于 2013-07-26T07:35:12.603 に答える
1

getOffset メソッドは、差をミリ秒単位で返します。

これらのタイム ゾーンも DST を使用することに注意してください。UTC からの現在のオフセットは、それぞれ 2 時間と 1 時間です。

于 2013-07-26T07:36:32.297 に答える