一部のユーザーのタイムゾーンを夏時間証明形式で保存したいと思います。
私の目標は、コードが実行されるたびに正しいGMTオフセットを取得することです。
私の最良の選択肢を見つけるために、私は次のように書いた:
ArrayList<String> list = new ArrayList<String>();
list.add( "EST");
list.add( "EDT");
list.add( "America/New_York");
long now = System.currentTimeMillis();
for( String tzID: list) {
TimeZone tz = TimeZone.getTimeZone( tzID);
System.out.println( tzID + " now=" + tz.getOffset( now) / 3600000 + " / +182=" + tz.getOffset( now + ( 182 * 86400000)) / 3600000);
}
簡単に言えば、今オフセットを教えてください。182日で
9月3日に実行され、出力は次のようになります。
EST now=-5 / +182=-5
EDT now=0 / +182=0
America/New_York now=-4 / +182=-4
これはいくつかの理由で予想外です
1)なぜAmerica/New_Yorkは-4/-5を与えないのですか?、それは日付に敏感であるはずではありませんか?
2)EDT == UTCなのはなぜですか?