java - 意外的时区错误

标签 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。

最佳答案

时区存储在多个 data files 中在 Joda-Time jar 中,并从 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. 实际上并没有传递您认为的字符串。

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

关于java - 意外的时区错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33510056/

相关文章:

JavaFX 从另一个线程更新 UI

java - 如何在 JavaFX 中传递参数

java - new 运算符和 Class.newInstance() 有什么区别?

java - 使用 Joda Time 时无法生成启用了混淆器的签名 APK

c# - 如何从 javadoc 中排除某些类/包/公共(public)成员

Java - 解决多个条件逻辑的设计模式

java - 字符串日期时间转换为 LocalDateTime 对象

android - 对于 Android 应用程序来说,joda 时间库有多大?

android - Joda DateTime 对象添加 +1 小时

time - org.joda.LocalTime 在 Swagger 中的表示