2009-03-05 9 views

Répondre

1

Il y a une liste de tous les fuseaux horaires dans le registre:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Time Zones Qui peut être chargé en utilisant:

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); 
     } 
    } 
} 

Où TimeZoneInformation est juste une classe qui stocke les informations pour un accès facile.

La description que vous cherchez est dans la valeur d'affichage.

+0

Cette réponse semble fausse à plusieurs égards. Premièrement, le PO a demandé des noms traduits. Deuxièmement, vous pouvez simplement utiliser TimeZoneInfo.GetSystemTimeZones() au lieu du code indiqué. –