Java SystemV时区和JodaTime

时间:2012-05-21 11:40:58

标签: java timezone jodatime

我正在使用JodaTime在Java应用程序中使用时区。尝试从java时区的id构建DateTimeZone(JodaTime)对象时遇到问题。 Joda抛出一个

 java.lang.IllegalArgumentException: The datetime zone id 'SystemV/HST10' is not recognised

下面列出的时区列表:

  • SystemV / HST10
  • SystemV / YST9
  • SystemV / YST9YDT
  • SystemV / PST8
  • SystemV / PST8PDT
  • SystemV / MST7
  • SystemV / MST7MDT
  • SystemV / CST6
  • SystemV / CST6CDT
  • SystemV / EST5
  • SystemV / EST5EDT
  • SystemV / AST4
  • SystemV / AST4ADT

这些时区用于什么?它们与非程序员有关吗?设计用于一般用途的应用程序是否应支持这些时区?

感谢。

3 个答案:

答案 0 :(得分:1)

您可以使用方法DateTimeZone #forTimeZone

将java TimeZone简单地转换为DateTimeZone
TimeZone tz = //...  
DateTimeZone dtz = DateTimeZone.forTimeZone(tz);  

可以在没有“ SystemV /

的情况下解析其中一些区域

所以你可以使用

String tzId = "SystemV/MST7MDT";
DateTimeZone tz = DateTimeZone.forID(tzId.replaceAll("SystemV/", ""));  

你也可以下一步

TimeZone tz = TimeZone.getTimeZone("SystemV/MST7MDT");
DateTimeZone jodaTz = DateTimeZone.forTimeZone(tz);

答案 1 :(得分:1)

我会将此添加为新帖子,因为它提供了我的问题的答案。 SystemV时区被用在一个旧的UNIX操作系统中,你猜对了它,UNIX SYSTEM V.在与我的团队讨论后,我们认为它们对非程序员甚至现在的程序员都不重要。所以我们决定不在我们的应用程序中使用它们。

有关SystemV时区的一些参考文献:

答案 2 :(得分:1)

SystemV时区ID已旧并已弃用。但是,您可以通过re-compiling joda-time jar文件使Joda-Time了解它们,并包含systemv时区数据文件。请参阅systemv数据文件中的commented out行。 (即取消注释行并重建jar文件)。