亚利桑那州时区日光节约时间
我正在尝试获取特定时区的当前时间。我尝试了以下代码。
Calendar j = new GregorianCalendar(TimeZone.getTimeZone("US/Mountain"));j.setTimeInMillis(Calendar.getInstance().getTimeInMillis());
System.out.println(j.get(Calendar.HOUR_OF_DAY)+":"+j.get(Calendar.MINUTE));
TimeZone tz = TimeZone.getTimeZone("US/Mountain");
System.out.println("tz.getRawOffset()"+tz.getRawOffset()/3600);
System.out.println(tz.getDSTSavings());
System.out.println
(tz.inDaylightTime(new Date()));
我得到的答案令人惊讶-16:57-错了1个小时tz.getRawOffset()-7000
3600000是-为什么亚利桑那州的夏令时是正确的?如何获得凤凰城或美国任何其他城市的正确挂钟时间?
回答:
亚利桑那州处于山区时区,但未遵守DST。如果您将时区指定为“
US / Mountain”,则计算机将应用Mountain时区中大多数州使用的规则,包括观察夏令时。要获取亚利桑那州的规则(不包含DST),您需要时区为“
US / Arizona”(或“ America / Phoenix”)。在纳瓦霍族中,您想要的时区名为“纳瓦霍”。
为了避免麻烦,请始终尝试使用“ America / *”中的名称,在该名称中可以选择与您感兴趣的地方具有相同时区规则的城市名称。
要在世界上任何给定的城市中在正确的时区中获取正确的时间,您只需熟悉Olson时区数据库中的名称及其含义。虽然您通常认为“时区”一词是指冬季中的一天中的时间(每个人都遵守标准时间),但在Olson数据库中,时区名称代表了夏令时规则和时区规则的全部历史记录针对特定区域。
例如,即使印第安纳州现在遵守东部时间并遵守夏令时(除了芝加哥附近的几个县,如芝加哥这样的中部时间),但在2006年之前,他们没有遵守夏令时。创建了一个时区“
US / Indiana”(或“ America / Indianapolis”)来覆盖该地区,即使在今天,您在谈论印第安纳州时仍要使用时区“
America / Indianapolis”,以便查询日期并且可以正确回答2006年之前的时间。
以上是 亚利桑那州时区日光节约时间 的全部内容, 来源链接: utcz.com/qa/410221.html