作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要将 GMT
转换为亚利桑那时间。亚利桑那州目前有 MST
(夏令时关闭)。
但是在 Joda Time DateTimeZone
代码中,MST
已映射到 America/Denver
:
map.put("MST", "America/Denver");
可以看出,目前丹佛有夏令时,因此有 MDT
。那为什么在DateTimeZone
代码中做了这样的映射呢?
从 GMT
转换为亚利桑那州本地时区时,我得到的偏移量为 GMT-6
,这是错误的,应该是 GMT-7
因为 MST
没有夏令时。
这是一个错误吗?如何解决问题?
最佳答案
起初我以为 Joda 时间会使用与基本 Java 的时区相同的时区 ID。我通过代码调试,发现它有点复杂。虽然可能与 Joda 并行使用与基本 Java 相同的 ID,但它实际上是从 joda jar 中的文件加载时区信息。这个例子是用所有的 Joda 类完成的。dt 出现在亚利桑那州凤凰城时间。
public static void main(String[] args)
{
//List all time zones
Set<String> timezones = DateTimeZone.getAvailableIDs();
for(String tz : timezones)
{
System.out.println(tz);
}
DateTimeZone arizona = DateTimeZone.forID("US/Arizona");
DateTimeZone.setDefault(arizona);
DateTime dt = new DateTime();
System.out.println(dt);
}
关于java - MST 被映射到 joda 中的丹佛时区,目前是 MDT。这是 joda DateTimeZone 中的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43028011/
我是一名优秀的程序员,十分优秀!