java - 亚利桑那时区夏令时

标签 java timezone dst

我正在尝试获取特定时区的当前时间。我尝试了以下代码。

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 360万 是的 - 为什么夏令时适用于亚利桑那州? 如何获得凤凰城或美国任何其他城市的正确挂钟时间?

最佳答案

亚利桑那州是 in the Mountain timezone, but doesn't observe DST .如果您指定时区“美国/山区”,则计算机将应用山区时区中大多数州使用的规则,其中包括遵守夏令时。要获取亚利桑那州(不包括 DST)的规则,您需要时区“US/Arizona”(或“America/Phoenix”)。在纳瓦霍民族中,您希望将时区命名为“纳瓦霍”。

为了省去一些麻烦,请始终尝试使用“America/*”中的名称,您可以在其中选择与您感兴趣的地点具有相同时区规则的城市名称。

要获得世界上任何给定城市在正确时区的正确时间,您只需熟悉奥尔森时区数据库中的名称及其含义即可。虽然您通常认为术语“时区”是指冬日中的时间(当每个人都遵守标准时间时),但在 Olson 数据库中,时区名称代表夏令时规则和时区规则的整个历史对于特定区域。

例如,即使 Indiana now observes Eastern time and observes DST (除了芝加哥附近的几个县,它们像芝加哥一样采用中部时间),在 2006 年之前,他们没有遵守夏令时。创建了一个名为“US/Indiana”(或“America/Indianapolis”)的时区来覆盖该地区,即使在今天,您在谈论印第安纳时仍然希望使用时区“America/Indianapolis”,以便查询日期2006 年之前的时间可以正确回答。

关于java - 亚利桑那时区夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4065641/

相关文章:

apache-spark - Spark : converting GMT time stamps to Eastern taking daylight savings into account

java - 从命令行使用 JAR 保持 JVM 运行

java - 从 Hibernate 映射创建对象

c# - 使用野田时间在时区之间转换

mysql - 通过 django 将时间插入 mysql 数据库时,它存储不同的时间

c++ - 关于夏令时的逻辑操作时间

java - 如何使用 Inubit 工具集将图像存储在数据库中?

java - 接收拔掉耳机时间太长

php - 将选定的时间和时区转换为设定的时区

Java 和 Windows 区域设置