2013 年 1 月 20 日、2012 年 8 月 8 日などの形式で、独自のタイムゾーンを持つ日付があります。たとえば、2013 年 1 月 20 日のタイムゾーン ID はオーストラリア/メルボルン、2012 年 8 月 8 日のタイムゾーン ID はヨーロッパ/ロンドンなどです。私がやりたいことは、これらのタイムゾーンと日付に基づいて、指定された日付のそのタイムゾーンの UTC オフセットを計算することです。私はこれまでにこれを思いつきました:
DateTimeFormatter dtf = DateTimeFormat.forPattern("ZZ");
DateTimeFormatter dtf1 = DateTimeFormat.forPattern("ddMMMYYYY");
DateTimeZone zone = DateTimeZone.forID("Australia/Melbourne");
DateTime thisDate = dtf1.parseDateTime("30Jul2013");
System.out.println("\nZone: " + thisDate.withZone(zone));
これにより、出力が得られます。
Zone: 2013-07-30T00:00:00.000+10:00
これは正しいですが、ここから UTC オフセット (この場合は +10:00) だけを抽出したいと思います。これを行う方法を探しましたが、何も見つかりません。これを行う方法はありますか?私が見る唯一のオプションは、出力を文字列に変換し、部分文字列メソッドを使用して UTC オフセットを取得することです。
上記のコードでは、DST (夏時間) が考慮されています。たとえば、次のような場合: DateTime thisDate = dtf1.parseDateTime("30Jan2013");
出力は次のようになります: 2013-01-30T00:00:00.000+11:00
(+10:00 ではなく、最後に +11:00)
したがって、基本的に必要なことは、2013-07-30T00:00:00.000+11:00 から +11:00 を抽出する方法を見つけることだけです。助けてください!