GetSystemTimeZones的全球化()

时间:2010-05-27 14:28:26

标签: c# asp.net globalization cultureinfo

我想获得一个时区列表,以便我可以填充下拉列表。在.NET 3.5中,我们有TimeZoneInfo命名空间,这里是代码:

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

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

1 个答案:

答案 0 :(得分:3)

这取决于操作系统。直接从MSDN blog

  

在低端平台上   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不会更改这些键的输出语言。似乎改变区域设置是唯一的方法。这确实需要您关闭会话才能生效。