意外的时区错误

时间:2015-11-03 22:11:21

标签: java jodatime

我在尝试传递时区时遇到以下异常:Etc/GMT+8进行转换:

    DateTimeZone toTimeZone = DateTimeZone.forID(toTimeZoneData);

提出:

java.lang.IllegalArgumentException: The datetime zone id 'Etc/GMT+8' is not recognised - null

这是valid timezone ID,但我仍然收到此错误。我不知道为什么。我正在使用Joda Time 2.2。

1 个答案:

答案 0 :(得分:1)

时区存储在Joda-Time jar中的多个data files中,并从IANA中提取,这是全球时区的规范来源。请参阅updating the time zone data files上的相关Joda-Time文档。

与@SotiriosDelimanolis一样,我已经验证DateTimeZone.forID("Etc/GMT+8");在我的机器上运行,该机器正在运行Joda-Time 2.3。目前的版本2.9应该同样有效。我还验证了2.2中的数据文件包含Etc区域。

如果您收到此错误,请执行以下操作:

  1. 运行旧版或损坏的Joda-Time版本并应升级。
  2. 使用无效数据文件从源代码构建,并刷新数据文件。
  3. 实际上没有传递你认为你的字符串。
  4. 查看错误消息#3似乎不是罪魁祸首,但它肯定是可能的(特别是如果您没有直接复制粘贴消息)。