编程语言
首页 > 编程语言> > java – MST映射到当前是MDT的joda中的Denver时区.这是joda DateTimeZone中的错误吗?

java – MST映射到当前是MDT的joda中的Denver时区.这是joda DateTimeZone中的错误吗?

作者:互联网

我需要将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);

}

标签:java,jodatime,timezone-offset
来源: https://codeday.me/bug/20190701/1350660.html