是否有Java库将Olsen时区ID转换为Windows时区ID

时间:2016-04-13 16:52:41

标签: java timezone

我有一个遗留的Windows应用程序,它从数据库中读取数据。其中一列是TimeZoneInfoId'。遗留世界中哪个是由另一个Windows应用程序编写的,因此它存储了Windows字符串:     TimeZoneInfo.CurrentTimeZone.StandardName

我现在需要从Java应用程序写入此表。所以我试图找到一个库,它将时区ID从tz database(以前称为Olson数据库)映射到windows时区id。理想情况下,我想使用一个理论上我可以在将来更新到更高版本的库,因为我已经读过时区信息有时会发生变化。

我已经在网上搜索了一下,我发现的答案一般都说要么写自己的映射/查找,要么使用NodaTime并在.NET中进行转换(如果你真的需要一个库,那么可以更新)。

我无法更新遗留代码(没有完整的重写),所以只是在这里提出问题,因为我发现的大多数答案都有点旧,所以也许我有新的东西可以利用;)

如果不是,它必须是自定义查找功能我hfea。

1 个答案:

答案 0 :(得分:0)

好吧,假设您的意思是来自TimeZoneInfo.Local.Id,那么您可以执行此转换。如果它来自TimeZone.CurrentTimeZone.StandardName,则会有一些条目失败,因为StandardName是本地化字符串,而英语表单不一定与Id匹配

回答您的问题,您只需查看source XML data in CLDR,然后将其解析为how I described here

或者,如果您真的想要一个库,请考虑ICU4J使用相同数据进行转换的方法getWindowsIdgetIDForWindowsID。但是,ICU可能非常大,所以如果您只需要它,那么最好直接使用XML。