use*_*428 5 java jodatime timezone-offset
我需要转换GMT为亚利桑那州时间。亚利桑那州目前已MST关闭夏令时。
然而在 Joda TimeDateTimeZone代码中,MST已映射到America/Denver:
map.put("MST", "America/Denver");
Run Code Online (Sandbox Code Playgroud)
可以看出,目前丹佛实行夏令时,因此有MDT。DateTimeZone那么为什么要在代码中进行这样的映射呢?
在从 转换为亚利桑那州本地时区时GMT,我得到了偏移量,因为GMT-6这是错误的,而且应该是这样GMT-7,因为MST没有夏令时。
这是一个错误吗?如何解决问题?
起初我以为 Joda 时间会使用与基础 Java 的 TimeZone 相同的 TimeZone 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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1350 次 |
| 最近记录: |