我有一个遗留的Windows应用程序,它从数据库中读取数据。其中一列是TimeZoneInfoId'。遗留世界中哪个是由另一个Windows应用程序编写的,因此它存储了Windows字符串: TimeZoneInfo.CurrentTimeZone.StandardName
我现在需要从Java应用程序写入此表。所以我试图找到一个库,它将时区ID从tz database(以前称为Olson数据库)映射到windows时区id。理想情况下,我想使用一个理论上我可以在将来更新到更高版本的库,因为我已经读过时区信息有时会发生变化。
我已经在网上搜索了一下,我发现的答案一般都说要么写自己的映射/查找,要么使用NodaTime并在.NET中进行转换(如果你真的需要一个库,那么可以更新)。
我无法更新遗留代码(没有完整的重写),所以只是在这里提出问题,因为我发现的大多数答案都有点旧,所以也许我有新的东西可以利用;)
如果不是,它必须是自定义查找功能我hfea。
答案 0 :(得分:0)
好吧,假设您的意思是来自TimeZoneInfo.Local.Id
,那么您可以执行此转换。如果它来自TimeZone.CurrentTimeZone.StandardName
,则会有一些条目失败,因为StandardName
是本地化字符串,而英语表单不一定与Id
匹配
回答您的问题,您只需查看source XML data in CLDR,然后将其解析为how I described here。
或者,如果您真的想要一个库,请考虑ICU4J使用相同数据进行转换的方法getWindowsId
和getIDForWindowsID
。但是,ICU可能非常大,所以如果您只需要它,那么最好直接使用XML。