android 2.2 で Calendar#setTimeZone が使えない問題と workaround
android 2.2 まで Calendar#setTimeZone メソッドや、Calendar.getInstance メソッドの引数による TimeZone の指定が正しく動作しないという問題がありました。
http://code.google.com/p/android/issues/detail?id=6184
より詳細には、何かしらの TimeZone を指定すると何故か GMT になります。何も指定しないと TimeZone#getDefault が利用されるのですが、それを利用した workaround が以下のコードスニペット。
TimeZone timezone = ...; Calendar cal; synchronized (TimeZone.class.getClass()) { TimeZone tmp = TimeZone.getDefault(); TimeZone.setDefault(timezone); cal = Calendar.getInstance(); TimeZone.setDefault(tmp); }
なんともいえませんね…