我想获得一个时区列表,以便我可以填充下拉列表。在.NET 3.5中,我们有TimeZoneInfo命名空间,这里是代码:
ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();
foreach (TimeZoneInfo timeZone in timeZones)
string name = timeZone.DisplayName
但是,“DisplayName”是英文的。如何通过cultureInfo以便返回其他语言?我尝试设置Thread.CurrentCulture和CurrentUICulture,它没有用。我错过了什么吗?
答案 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)支持似乎是关键:
编辑:我对win7进行了快速测试,设置CurrentUICulture不会更改这些键的输出语言。似乎改变区域设置是唯一的方法。这确实需要您关闭会话才能生效。支持MUI的操作系统,如 Windows Vista包含MUI_Display, MUI_Std和MUI_Dlt键,它们是 由操作间接控制 系统区域设置