英国では、UTC/GMTから現在のオフセットを取得したいと思います。現在、オフセットは1時間ですが、これを見つける方法はないようです。
コード
TimeZone timeZone = TimeZone.getDefault();
logger.debug("Timezone ID is '" + timeZone.getID() + "'");
if (timeZone.getID().equals("GMT")) {
timeZone = TimeZone.getTimeZone("Europe/London");
logger.debug("New timezone is '" + timeZone.getID() + "'");
}
Long eventDateMillis = Long.parseLong(eventDateValue.getKeyValue());
int timezoneOffset = timeZone.getOffset(eventDateMillis);
logger.debug("Offset for " + eventDateValue + "(" + eventDateMillis + ") using timezone " + timeZone.getDisplayName() + " is " + timezoneOffset);
デバッグ出力を返します
Wed 2012/09/19 16:38:19.503|Debug|DataManagement|Timezone ID is 'GMT'
Wed 2012/09/19 16:38:19.503|Debug|DataManagement|New timezone is 'GMT'
Wed 2012/09/19 16:38:19.557|Debug|DataManagement|Offset for 18 Sep 2012 09:00(1347958800000) using timezone Greenwich Mean Time is 0
つまり、タイムゾーン'GMT'はゼロのオフセットを返していますが、正しいオフセットを返すように設定する方法が見つかりません。
誰かがJodaTimeの実用的なコードサンプルを提供できれば、それは可能ですが、ワンライナーにするためだけに別のライブラリをインストールする必要はありません。
Javaのバージョンは7です。