【发布时间】:2011-05-14 23:32:54
【问题描述】:
我需要制作一个 WPF 控件,它允许用户选择一个时区。这个控件还需要支持多种语言。即,时区名称应以应用程序中选择的语言显示。
.NET 3.5 支持通过调用TimeZoneInfo.GetSystemTimeZones 方法从注册表中获取时区列表的简单方法。这种方法的问题在于它依赖于当前系统。这意味着不同的用户可能在他们的机器上显示不同的时区列表。如果用户拒绝更新他的系统,其中一些列表可能已经过时了。
解决此问题的一种方法可能是通过在最新计算机上调用 TimeZoneInfo.GetSystemTimeZones 来获取最新列表。然后将其序列化为一个文件,该文件将与应用程序一起部署。此外,由于此列表以当前系统语言返回,因此我需要为不同 Windows 本地化的每种语言生成列表。或者只是手动进行翻译。使用这种方法,只要用户拥有最新版本的应用程序,他就会拥有一个最新列表。
另一种方法可能是使用其他时区信息源,例如tz database。在这种情况下,我需要使用一些转换器将 tz 数据库时区 API 对象转换为标准 TimeZoneInfo 对象。
在此类或类似情况下,您使用或推荐什么方法?
【问题讨论】: