我想以夏令時證明格式保存一些用戶時區。
我的目標是在代碼執行時獲得正確的GMT偏移量。
爲了弄清楚我最好的選擇,我寫了下面:Java TimeZone頭劃傷
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?
這就是你感到孤單,因爲問一個愚蠢的問題......謝謝:) – MonoThreaded
它是一個很常見的問題(重新溢出)。這不是一個愚蠢的問題,試試'我該怎麼去'在谷歌,看看它暗示了一個愚蠢的問題:D –