4

有谁知道 Windows 中时区名称的编译列表?我需要德语、法语和西班牙语的全部 75 个左右。或者,我将如何使用 .Net 来编译这样的列表?

示例格式:(GMT+01:00) 贝尔格莱德、布拉迪斯拉发、布达佩斯、卢布尔雅那、布拉格

4

3 回答 3

6

从https://iana.org/time-zonesftp://ftp.iana.org/tz(或网络上的许多其他来源)获取时区数据库。这些将输入联合国 ISO 代码和英文国家/城市名称

然后从http://www.unicode.org/cldr/翻译它们

例如

于 2009-03-05T23:17:19.543 回答
3

Microsoft 术语集可供非商业用途下载。

于 2013-01-07T23:58:51.597 回答
0

注册表中的所有时区列表位于:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

可以使用以下方式加载:

ArrayList zones = new ArrayList();

using( RegistryKey key = Registry.LocalMachine.OpenSubKey(
    @"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones" ) )
{
    string[] zoneNames = key.GetSubKeyNames();

    foreach( string zoneName in zoneNames )
    {
        using( RegistryKey subKey = key.OpenSubKey( zoneName ) )
        {
            TimeZoneInformation tzi = new TimeZoneInformation();
            tzi.Name = zoneName;
            tzi.DisplayName = (string)subKey.GetValue( "Display" );
            tzi.StandardName = (string)subKey.GetValue( "Std" );
            tzi.DaylightName = (string)subKey.GetValue( "Dlt" );
            object value = subKey.GetValue( "Index" );
            if( value != null )
            {
                tzi.Index = (int)value;
            }

            tzi.InitTzi( (byte[])subKey.GetValue( "Tzi" ) );

            zones.Add( tzi );
        }
    }
}

其中 TimeZoneInformation 只是一个存储信息以便于访问的类。

您要查找的描述位于“显示”值中。

于 2009-03-05T23:50:59.277 回答