我需要将GMT转换为亚利桑那时间.亚利桑那州目前有MST(夏令时).
但是在Joda Time DateTimeZone代码中,MST已映射到America / Denver:
map.put("MST", "America/Denver");
可以看出,目前丹佛有夏令时,因此有MDT.
那么为什么在DateTimeZone代码中进行了这样的映射呢?
从格林尼治标准时间转换到亚利桑那州的当地时区时,由于GMT-6错误而应该是GMT-7,因为MST没有夏令时.
这是一个错误吗?
如何解决这个问题?
最佳答案 起初我认为Joda时间将使用相同的TimeZone ID作为基础Java的TimeZone.我通过代码调试,发现它有点复杂.虽然可能与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);
}