Java SystemV时区和JodaTime
我正在使用JodaTime在Java应用程序中使用时区。 尝试从java时区的id构建DateTimeZone(JodaTime)对象时遇到问题。 乔达扔了一个
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
这些时区用于什么? 它们与非程序员有关吗? 设计用于一般用途的应用程序是否应支持这些时区?
谢谢。
SystemV时区ID已旧并已弃用。 但是,您可以通过重新编译包含systemv时区数据文件的joda-time jar文件,让Joda-Time了解它们。 请参阅systemv数据文件中注释掉的行。 (即取消注释行并重建jar文件)。
您可以使用方法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);
我将此添加为新post,因为它提供了我的问题的答案。 SystemV时区被用在一个旧的UNIX操作系统中,你猜对了它,UNIX SYSTEM V.在与我的团队讨论之后,我们认为它们对非程序员甚至现在的程序员都不重要。 所以我们决定不在我们的应用程序中使用它们。
有关SystemV时区的一些参考: