3

我想获取时区列表,以便我可以填充下拉列表。在 .NET 3.5 中,我们有 TimeZoneInfo 命名空间,代码如下:

ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();
foreach (TimeZoneInfo timeZone in timeZones)
    string name = timeZone.DisplayName

但是,“DisplayName”是英文的。如何传递cultureInfo 以便它可以返回其他语言?我尝试设置 Thread.CurrentCulture 和 CurrentUICulture,但没有成功。我错过了什么吗?

4

1 回答 1

3

这取决于操作系统。直接来自MSDN 博客

在 Windows XP 和 Windows Server 2003 等低级平台上,仅存在 Display、Std 和 Dlt 键。Display、Std 和 Dlt 键值仅本地化为操作系统的默认语言。由于 Windows 时区注册表体系结构,CurrentUICulture 设置不会影响这些 TimeZoneInfo 属性的值。

看来,在 win xp 和 server 2003 上,你不走运。

在 vista、win7 和 server 2008 上,您应该能够通过更改区域设置来获得其他语言。多语言用户界面 (MUI) 支持似乎是关键:

支持 MUI 的操作系统(如 Windows Vista)包含 MUI_Display、MUI_Std 和 MUI_Dlt 键,这些键由操作系统区域设置间接控制

编辑:我在 win7 上做了一个快速测试,设置 CurrentUICulture 不会改变这些键的输出语言。似乎更改区域设置是唯一的方法。不过,这确实需要您关闭会话才能生效。

于 2010-05-27T16:36:05.403 回答