意外的时区错误



我在尝试通过时区时遇到以下异常:Etc/GMT+8用于转换:

    DateTimeZone toTimeZone = DateTimeZone.forID(toTimeZoneData);

加薪:

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

这是一个有效的时区ID,但我仍然收到这个错误。我不知道为什么。我用的是Joda Time 2.2。

时区存储在Joda Time jar中的几个数据文件中,并从IANA中提取,IANA是全球时区的规范来源。请参阅Joda Time的相关文档以更新时区数据文件。

像@SotiriosDelimanolis一样,我已经在运行Joda Time 2.3的机器上验证了DateTimeZone.forID("Etc/GMT+8");的成功。目前的版本2.9应该也能起到类似的作用。我还验证了2.2中的数据文件包含Etc区域。

如果你得到这个错误,你要么:

  1. 运行旧版本或损坏的Joda Time,应该升级
  2. 使用无效的数据文件从源构建,并且应该刷新数据文件
  3. 并没有真正传递你所认为的字符串

查看错误消息#3似乎不是罪魁祸首,但这肯定是可能的(特别是如果您没有直接复制粘贴消息)。

最新更新