我想在特定时区获得当前时间.我试过以下代码.
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()));
Run Code Online (Sandbox Code Playgroud)
我得到的答案令人惊讶 - 16:57 - 错误1小时tz.getRawOffset() - 7000 3600000真实 - 为什么夏令时适用于亚利桑那州?如何获得凤凰城或美国任何其他城市的正确挂钟时间?
亚利桑那州位于山区时区,但没有观察到夏令时.如果指定时区"US/Mountain",则计算机将应用Mountain时区中大多数州使用的规则,其中包括观察夏令时.要获得亚利桑那州(不包括DST)的规则,您需要时区"US/Arizona"(或"America/Phoenix").在纳瓦霍国家,您需要名为"Navajo"的时区.
为了省去一些麻烦,请始终尝试使用"America/*"中的名称,您可以在其中选择与您感兴趣的地点具有相同时区规则的城市名称.
要在世界上任何特定城市的正确时区内获得正确的时间,您只需熟悉Olson时区数据库中的名称及其含义即可.虽然您通常认为术语"时区"是指冬季中的时间(当每个人都观察标准时间时),但在Olson数据库中,时区名称表示夏令时规则和时区规则的整个历史记录.对于特定地区.
例如,即使印第安纳州现在观察东部时间并观察夏令时(芝加哥附近的几个县除了像芝加哥那样在中部时间),在2006年之前他们没有观察夏令时.创建一个名为"美国/印第安纳"(或"美洲/印第安纳波利斯")的时区来覆盖这个地区,即使在今天,你仍然想在谈论印第安纳时使用时区"America/Indianapolis",以便查询日期2006年之前的时间可以正确回答.
| 归档时间: |
|
| 查看次数: |
5662 次 |
| 最近记录: |