我想以夏令时证明格式保存一些用户时区。
我的目标是在代码执行时获得正确的 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?