Quelle valeur dois-je passer dans TimeZoneInfo.FindSystemTimeZoneById (String)?

Réponses:

93

Voici la liste dans Windows 8 (j'ai extrait du registre Windows)

Heure standard de l'Afghanistan
Heure standard de l'Alaska
Heure standard de l'Alaska \ DST dynamique
Heure standard arabe
Heure standard arabe
Heure standard arabe
Heure standard arabe \ DST dynamique
Heure normale de l'Argentine
Heure normale de l'Argentine \ DST dynamique
Heure normale de l'Atlantique
Heure normale de l'Atlantique \ DST dynamique
Heure normale du centre AUS
Heure normale de l'Est de l'AUS
AUS Eastern Standard Time \ Dynamic DST
Heure standard d'Azerbaïdjan
Heure standard des Açores
Heure standard des Açores \ DST dynamique
Heure standard de Bahia
Heure standard de Bahia \ DST dynamique
Heure normale du Bangladesh
Heure normale du Bangladesh \ DST dynamique
Heure normale du centre du Canada
Heure standard du Cap-Vert
Heure standard du Caucase
Heure standard du Caucase \ DST dynamique
Cen. Heure standard d'Australie
Cen. Heure normale d'Australie \ DST dynamique
Heure standard d'Amérique centrale
Heure standard de l'Asie centrale
Heure standard du centre du Brésil
Heure normale du centre du Brésil \ DST dynamique
Heure normale de l'Europe centrale
Heure normale d'Europe centrale
Heure normale du Pacifique central
Heure standard centrale
Heure standard centrale \ DST dynamique
Heure normale du centre (Mexique)
Heure standard de la Chine
Heure standard de la ligne de données
E. Heure standard de l'Afrique
Heure normale de l'Australie E.
Heure normale de l'Europe
E. Heure standard de l'Amérique du Sud
E. Heure standard de l'Amérique du Sud \ DST dynamique
Heure normale de l'Est
Heure normale de l'Est \ DST dynamique
Heure standard de l'Égypte
Heure normale de l'Égypte \ DST dynamique
Heure standard d'Ekaterinbourg
Heure standard d'Ekaterinbourg \ DST dynamique
Heure standard des Fidji
Heure standard des Fidji \ DST dynamique
Heure standard FLE
Heure standard géorgienne
Heure standard GMT
Heure standard du Groenland
Heure standard du Groenland \ DST dynamique
Heure standard de Greenwich
Heure standard GTB
Heure standard hawaïenne
Heure normale de l'Inde
Heure standard d'Iran
Heure standard d'Iran \ DST dynamique
Heure standard d'Israël
Heure standard d'Israël \ DST dynamique
Heure standard de Jordanie
Heure standard de Jordanie \ DST dynamique
Heure standard de Kaliningrad
Heure standard de Kaliningrad \ DST dynamique
Heure standard du Kamtchatka
Heure standard de la Corée
Heure standard de la Libye
Heure standard de la Libye \ DST dynamique
Heure standard de Magadan
Heure normale de Magadan \ DST dynamique
Heure standard de Maurice
Heure standard de Maurice \ DST dynamique
Heure normale du centre de l'Atlantique
Heure standard du Moyen-Orient
Heure standard du Moyen-Orient \ DST dynamique
Heure standard de Montevideo
Heure standard de Montevideo \ DST dynamique
Heure standard du Maroc
Heure standard du Maroc \ DST dynamique
Heure normale des montagnes
Heure normale des montagnes \ DST dynamique
Heure normale des montagnes (Mexique)
Heure standard du Myanmar
Heure normale de l'Asie centrale du Nord
Heure normale de l'Asie centrale du Nord \ DST dynamique
Heure standard de la Namibie
Heure standard de la Namibie \ DST dynamique
Heure standard du Népal
Heure standard de la Nouvelle-Zélande
Heure standard de Nouvelle-Zélande \ DST dynamique
Heure normale de Terre-Neuve
Heure normale de Terre-Neuve \ DST dynamique
Heure normale de l'Asie du Nord-Est
Heure standard de l'Asie du Nord-Est \ DST dynamique
Heure normale de l'Asie du Nord
Heure standard de l'Asie du Nord \ DST dynamique
Heure normale du Pacifique SA
Pacific SA Standard Time \ Dynamic DST
Heure Standard du Pacifique
Heure normale du Pacifique \ DST dynamique
Heure normale du Pacifique (Mexique)
Heure standard du Pakistan
Heure standard du Pakistan \ DST dynamique
Heure standard du Paraguay
Heure standard du Paraguay \ DST dynamique
Heure standard de la romance
Heure standard russe
Heure standard russe \ DST dynamique
Heure normale de l'Est SA
Heure normale du Pacifique SA
Heure normale de l'Ouest SA
Heure standard des Samoa
Heure standard de Samoa \ DST dynamique
Heure normale de l'Asie du Sud-Est
Heure standard de Singapour
Heure standard de l'Afrique du Sud
Heure standard du Sri Lanka
Heure standard de la Syrie
Heure standard de la Syrie \ DST dynamique
Heure standard de Taipei
Heure standard de Tasmanie
Heure standard de Tasmanie \ DST dynamique
Heure standard de Tokyo
Heure standard des Tonga
Heure standard de la Turquie
Heure standard de la Turquie \ DST dynamique
Heure standard d'Oulan-Bator
Heure normale de l'Est des États-Unis
Heure normale de l'Est des États-Unis \ DST dynamique
Heure standard des montagnes des États-Unis
UTC
UTC + 12
UTC-02
UTC-11
Heure normale du Venezuela
Heure normale du Venezuela \ DST dynamique
Heure standard de Vladivostok
Heure standard de Vladivostok \ DST dynamique
Heure standard de l'Australie occidentale
Heure standard de l'Australie occidentale \ DST dynamique
Heure normale de l'Afrique centrale occidentale
Heure standard de l'Europe de l'Ouest
Heure standard de l'Asie occidentale
Heure normale du Pacifique Ouest
Heure standard de Yakutsk
Heure standard de Yakutsk \ DST dynamique
mohghaderi
la source
5
Bien que le Royaume-Uni ne semble pas apparaître (GMT / BST), c'est apparemment GMT Standard Time( stackoverflow.com/questions/4034923/… ).
SharpC
3
Pour ceux qui se demandent ce qu'est Dynamic DST .... blogs.msdn.microsoft.com/bclteam/2007/06/07/…
Mick
Très grande aide! J'étais aussi précis! Cela m'a en fait aidé à rassembler pour mon application: ~ private static TimeZoneInfo INDIA_ZONE = TimeZoneInfo.FindSystemTimeZoneById ("INDIA Standard Time"); ~
PatsonLeaner
2
Il existe une différence entre «Heure normale de l'Est AUS» ci-dessus et «Heure normale de l'Australie de l'Est» renvoyée par TimeZoneInfo.GetSystemTimeZones (). Le premier prend en compte l'heure d'été et le second non. Voir dotnetfiddle.net/k3yKN4
Martin Capodici
1
Dans le monde multiplateforme de .NET Core, l'ID TimeZone dépend de l'emplacement d'exécution du code. Par exemple, sur un Mac, Sydney est "Australie / Sydney", sous Windows 10, le fuseau horaire correspondant est "Heure standard de l'Australie orientale".
Sudhanshu Mishra
38

Vous pouvez les récupérer à partir d'une liste statique dans la TimeZoneInfoclasse

var infos = TimeZoneInfo.GetSystemTimeZones();
foreach (var info in infos)
{
    Console.WriteLine(info.Id);
}

Exemple:

  var tzInfo = TimeZoneInfo.FindSystemTimeZoneById("New Zealand Standard Time");

Ou si vous voulez juste une liste des identifiants de fuseau horaire comme DJ KRAZE suggéré

  var timeZoneIds = TimeZoneInfo.GetSystemTimeZones().Select(t => t.Id);
sa_ddam213
la source
+1 Je créerais var lstTimeZones = new List <string> (); puis remplacez console.WriteLine (info.Id); avec lstTimeZones.Add (info.Id); à l'intérieur
MethodMan
15

Les fuseaux horaires disponibles sont:

Console.WriteLine(string.Join("\n",TimeZoneInfo.GetSystemTimeZones().Select(x=>x.Id)));

Résultat:

Dateline Standard Time
UTC-11
Aleutian Standard Time
Hawaiian Standard Time
Marquesas Standard Time
Alaskan Standard Time
UTC-09
Pacific Standard Time (Mexico)
UTC-08
Pacific Standard Time
US Mountain Standard Time
Mountain Standard Time (Mexico)
Mountain Standard Time
Central America Standard Time
Central Standard Time
Easter Island Standard Time
Central Standard Time (Mexico)
Canada Central Standard Time
SA Pacific Standard Time
Eastern Standard Time (Mexico)
Eastern Standard Time
Haiti Standard Time
Cuba Standard Time
US Eastern Standard Time
Paraguay Standard Time
Atlantic Standard Time
Venezuela Standard Time
Central Brazilian Standard Time
SA Western Standard Time
Pacific SA Standard Time
Turks And Caicos Standard Time
Newfoundland Standard Time
Tocantins Standard Time
E. South America Standard Time
SA Eastern Standard Time
Argentina Standard Time
Greenland Standard Time
Montevideo Standard Time
Saint Pierre Standard Time
Bahia Standard Time
UTC-02
Mid-Atlantic Standard Time
Azores Standard Time
Cape Verde Standard Time
UTC
Morocco Standard Time
GMT Standard Time
Greenwich Standard Time
W. Europe Standard Time
Central Europe Standard Time
Romance Standard Time
Central European Standard Time
W. Central Africa Standard Time
Namibia Standard Time
Jordan Standard Time
GTB Standard Time
Middle East Standard Time
Egypt Standard Time
E. Europe Standard Time
Syria Standard Time
West Bank Standard Time
South Africa Standard Time
FLE Standard Time
Israel Standard Time
Kaliningrad Standard Time
Libya Standard Time
Arabic Standard Time
Turkey Standard Time
Arab Standard Time
Belarus Standard Time
Russian Standard Time
E. Africa Standard Time
Iran Standard Time
Arabian Standard Time
Astrakhan Standard Time
Azerbaijan Standard Time
Russia Time Zone 3
Mauritius Standard Time
Georgian Standard Time
Caucasus Standard Time
Afghanistan Standard Time
West Asia Standard Time
Ekaterinburg Standard Time
Pakistan Standard Time
India Standard Time
Sri Lanka Standard Time
Nepal Standard Time
Central Asia Standard Time
Bangladesh Standard Time
Omsk Standard Time
Myanmar Standard Time
SE Asia Standard Time
Altai Standard Time
W. Mongolia Standard Time
North Asia Standard Time
N. Central Asia Standard Time
Tomsk Standard Time
China Standard Time
North Asia East Standard Time
Singapore Standard Time
W. Australia Standard Time
Taipei Standard Time
Ulaanbaatar Standard Time
North Korea Standard Time
Aus Central W. Standard Time
Transbaikal Standard Time
Tokyo Standard Time
Korea Standard Time
Yakutsk Standard Time
Cen. Australia Standard Time
AUS Central Standard Time
E. Australia Standard Time
AUS Eastern Standard Time
West Pacific Standard Time
Tasmania Standard Time
Vladivostok Standard Time
Lord Howe Standard Time
Bougainville Standard Time
Russia Time Zone 10
Magadan Standard Time
Norfolk Standard Time
Sakhalin Standard Time
Central Pacific Standard Time
Russia Time Zone 11
New Zealand Standard Time
UTC+12
Fiji Standard Time
Kamchatka Standard Time
Chatham Islands Standard Time
Tonga Standard Time
Samoa Standard Time
Line Islands Standard Time
Angelo Ortega
la source
9

Jetez un œil à la méthode statique sur la méthode TimeZoneInfoappelée TimeZoneInfo.GetSystemTimeZones().

Cela renverra une liste de tous ceux TimeZoneInfode votre système d'exploitation à partir du registre. Ils sont tous stockés sous: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones.

Un exemple est «GMT Standard Time» pour le fuseau horaire «Dublin, Édimbourg, Lisbonne, Londres».

DaveShaw
la source
2

La dernière documentation Microsoft, avec une liste de ces derniers, est disponible à l' adresse https://support.microsoft.com/en-gb/help/973627/microsoft-time-zone-index-values

Les chaînes d'ID de fuseau horaire sont actuellement les suivantes (si vous voulez voir le décalage horaire réel ou voir l'index hexadécimal pour chaque ID de fuseau horaire, cliquez sur le lien ci-dessus):

Heure standard des Samoa

Heure standard de l'Alaska

Heure normale des montagnes

Heure standard des montagnes des États-Unis

Heure normale du centre du Canada

Heure standard d'Amérique centrale

Heure normale de l'Est des États-Unis

Heure normale de l'Atlantique

Heure normale du Pacifique SA

E. Heure standard de l'Amérique du Sud

Heure standard du Groenland

Heure standard des Açores

Heure standard GMT

Heure normale d'Europe centrale

Heure standard de la romance

Heure normale de l'Afrique centrale occidentale

Heure standard de l'Égypte

Heure standard GTB

Heure standard de l'Afrique du Sud

Heure standard arabe

Heure standard arabe

Heure standard arabe

Heure standard de l'État islamique de transition d'Afghanistan

Heure standard de l'Asie occidentale

Heure standard du Népal

Heure standard du Sri Lanka

Heure standard du Myanmar

Heure normale de l'Asie du Nord

Heure standard de Singapour

Heure standard de l'Australie occidentale

Heure standard de la Corée

Heure standard de Yakutsk

Cen. Heure standard d'Australie

Heure normale de l'Australie E.

Heure standard de Vladivostok

Heure normale du Pacifique central

Heure standard de la Nouvelle-Zélande

Heure standard d'Azerbaïdjan 

Heure standard de Jordanie

Heure normale des montagnes (Mexique)

Heure standard de la Namibie

Heure standard du centre du Brésil

Heure standard arménienne

Heure normale de l'Argentine

Heure standard du Pakistan

UTC

Heure standard du Kamtchatka

d219
la source
1

Comme d'autres l'ont dit, vous pouvez trouver la liste en itérant TimeZoneInfo.GetSystemTimeZones()pour trouver la chaîne que vous souhaitez utiliser. Cela dit, si vous ne disposez que d'informations sur le décalage horaire (comme GMT + 9 ou GMT-10) et que vous ne trouvez pas votre fuseau horaire après avoir itéré les fuseaux horaires, vous voudrez peut-être voir l'url suivante pour voir de quel fuseau horaire avez-vous besoin https: / /msdn.microsoft.com/en-US/library/ms912391(v=winembedded.11).aspx

Dum Dum
la source
1

Ou vous pouvez passer TimeZoneInfo.Local.Idcomme ceci:

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(TimeZoneInfo.Local.Id);
DateTime localDateTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzi);
Pabinator
la source
1

Vous pouvez utiliser ce code ci-dessous

using System;

namespace TimeZoneIds
{
    class Program
    {
        static void Main(string[] args)
        {
            foreach (TimeZoneInfo z in TimeZoneInfo.GetSystemTimeZones())
                Console.WriteLine(z.Id);
        }
    }
}
Jefferson Bien-Aime
la source
1

Pour obtenir la liste la plus récente des fuseaux horaires, utilisez tzutil à partir de Windows:

tzutil / l

Ici vous pouvez trouver la liste officielle des identifiants de fuseau horaire de Microsoft dans MSDN: https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones

  ID      |   Time zone name
----------|------------------------
  0       |   Dateline Standard Time
  110     |   UTC-11
  200     |   Hawaiian Standard Time
  300     |   Alaskan Standard Time
  400     |   Pacific Standard Time
  410     |   Pacific Standard Time (Mexico)
  500     |   Mountain Standard Time
  510     |   Mountain Standard Time (Mexico)
  520     |   US Mountain Standard Time
  600     |   Canada Central Standard Time
  610     |   Central America Standard Time
  620     |   Central Standard Time
  630     |   Central Standard Time (Mexico)
  700     |   Eastern Standard Time
  710     |   SA Pacific Standard Time
  720     |   US Eastern Standard Time
  840     |   Venezuela Standard Time
  800     |   Atlantic Standard Time
  810     |   Central Brazilian Standard Time
  820     |   Pacific SA Standard Time
  830     |   SA Western Standard Time
  850     |   Paraguay Standard Time
  900     |   Newfoundland Standard Time
  910     |   E. South America Standard Time
  920     |   Greenland Standard Time
  930     |   Montevideo Standard Time
  940     |   SA Eastern Standard Time
  950     |   Argentina Standard Time
  1000    |   Mid-Atlantic Standard Time
  1010    |   UTC-2
  1100    |   Azores Standard Time
  1110    |   Cabo Verde Standard Time
  1200    |   GMT Standard Time
  1210    |   Greenwich Standard Time
  1220    |   Morocco Standard Time
  1230    |   UTC
  1300    |   Central Europe Standard Time
  1310    |   Central European Standard Time
  1320    |   Romance Standard Time
  1330    |   W. Central Africa Standard Time
  1340    |   W. Europe Standard Time
  1350    |   Namibia Standard Time
  1400    |   E. Europe Standard Time
  1410    |   Egypt Standard Time
  1420    |   FLE Standard Time
  1430    |   GTB Standard Time
  1440    |   Israel Standard Time
  1450    |   Jordan Standard Time
  1460    |   Middle East Standard Time
  1470    |   South Africa Standard Time
  1480    |   Syria Standard Time
  1490    |   Turkey Standard Time
  1500    |   Arab Standard Time
  1510    |   Arabic Standard Time
  1520    |   E. Africa Standard Time
  1530    |   Kaliningrad Standard Time
  1550    |   Iran Standard Time
  1540    |   Russian Standard Time
  1600    |   Arabian Standard Time
  1610    |   Azerbaijan Standard Time
  1620    |   Caucasus Standard Time
  1640    |   Georgian Standard Time
  1650    |   Mauritius Standard Time
  1630    |   Afghanistan Standard Time
  1710    |   West Asia Standard Time
  1750    |   Pakistan Standard Time
  1720    |   India Standard Time
  1730    |   Sri Lanka Standard Time
  1740    |   Nepal Standard Time
  1700    |   Ekaterinburg Standard Time
  1800    |   Central Asia Standard Time
  1830    |   Bangladesh Standard Time
  1820    |   Myanmar Standard Time
  1810    |   N. Central Asia Standard Time
  1910    |   SE Asia Standard Time
  1900    |   North Asia Standard Time
  2000    |   China Standard Time
  2020    |   Singapore Standard Time
  2030    |   Taipei Standard Time
  2040    |   W. Australia Standard Time
  2050    |   Ulaanbaatar Standard Time
  2010    |   North Asia East Standard Time
  2100    |   Korea Standard Time
  2110    |   Tokyo Standard Time
  2130    |   AUS Central Standard Time
  2140    |   Cen. Australia Standard Time
  2120    |   Yakutsk Standard Time
  2200    |   AUS Eastern Standard Time
  2210    |   E. Australia Standard Time
  2220    |   Tasmania Standard Time
  2240    |   West Pacific Standard Time
  2230    |   Vladivostok Standard Time
  2300    |   Central Pacific Standard Time
  2310    |   Magadan Standard Time
  2400    |   Fiji Standard Time
  2410    |   New Zealand Standard Time
  2430    |   UTC+12
  2500    |   Tonga Standard Time
  2510    |   Samoa Standard Time
Grégory L
la source
0

Une méthode pour passer d'un fuseau horaire à un autre:

DateTime n = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(datetime, "sourceTimeZoneId", "destinationTimeZoneId");

Je suis sur Win10 et je liste Time Zone Idavec time difference:

Dateline Standard Time                  -12
UTC-11                                  -11
Hawaiian Standard Time                  -10
Aleutian Standard Time                  -9
Marquesas Standard Time                 -9
UTC-09                                  -9
Alaskan Standard Time                   -8
UTC-08                                  -8
Pacific Standard Time (Mexico)          -7
Pacific Standard Time                   -7
US Mountain Standard Time               -7
Mountain Standard Time (Mexico)         -6
Mountain Standard Time                  -6
Central America Standard Time           -6
Easter Island Standard Time             -6
Canada Central Standard Time            -6
Central Standard Time                   -5
Central Standard Time (Mexico)          -5
SA Pacific Standard Time                -5
Eastern Standard Time (Mexico)          -5
Eastern Standard Time                   -4
Haiti Standard Time                     -4
Cuba Standard Time                      -4
US Eastern Standard Time                -4
Turks And Caicos Standard Time          -4
Paraguay Standard Time                  -4
Venezuela Standard Time                 -4
Central Brazilian Standard Time         -4
SA Western Standard Time                -4
Pacific SA Standard Time                -4
Atlantic Standard Time                  -3
Tocantins Standard Time                 -3
E. South America Standard Time          -3
SA Eastern Standard Time                -3
Argentina Standard Time                 -3
Montevideo Standard Time                -3
Magallanes Standard Time                -3
Bahia Standard Time                     -3
Newfoundland Standard Time              -2
Greenland Standard Time                 -2
Saint Pierre Standard Time              -2
UTC-02                                  -2
Mid-Atlantic Standard Time              -1
Cape Verde Standard Time                -1
Azores Standard Time                    0
UTC                                     0
Greenwich Standard Time                 0
Sao Tome Standard Time                  0
GMT Standard Time                       +1
Morocco Standard Time                   +1
W. Central Africa Standard Time         +1
W. Europe Standard Time                 +2
Central Europe Standard Time            +2
Romance Standard Time                   +2
Central European Standard Time          +2
Egypt Standard Time                     +2
South Africa Standard Time              +2
Kaliningrad Standard Time               +2
Sudan Standard Time                     +2
Libya Standard Time                     +2
Namibia Standard Time                   +2
Jordan Standard Time                    +3
GTB Standard Time                       +3
Middle East Standard Time               +3
E. Europe Standard Time                 +3
Syria Standard Time                     +3
West Bank Standard Time                 +3
FLE Standard Time                       +3
Israel Standard Time                    +3
Arabic Standard Time                    +3
Turkey Standard Time                    +3
Arab Standard Time                      +3
Belarus Standard Time                   +3
Russian Standard Time                   +3
E. Africa Standard Time                 +3
Iran Standard Time                      +4
Arabian Standard Time                   +4
Astrakhan Standard Time                 +4
Azerbaijan Standard Time                +4
Russia Time Zone 3                      +4
Mauritius Standard Time                 +4
Saratov Standard Time                   +4
Georgian Standard Time                  +4
Volgograd Standard Time                 +4
Caucasus Standard Time                  +4
Afghanistan Standard Time               +4
West Asia Standard Time                 +5
Ekaterinburg Standard Time              +5
Pakistan Standard Time                  +5
Qyzylorda Standard Time                 +5
India Standard Time                     +5
Sri Lanka Standard Time                 +5
Nepal Standard Time                     +5
Central Asia Standard Time              +6
Bangladesh Standard Time                +6
Omsk Standard Time                      +6
Myanmar Standard Time                   +6
SE Asia Standard Time                   +7
Altai Standard Time                     +7
W. Mongolia Standard Time               +7
North Asia Standard Time                +7
N. Central Asia Standard Time           +7
Tomsk Standard Time                     +7
China Standard Time                     +8
North Asia East Standard Time           +8
Singapore Standard Time                 +8
W. Australia Standard Time              +8
Taipei Standard Time                    +8
Ulaanbaatar Standard Time               +8
Aus Central W. Standard Time            +8
Transbaikal Standard Time               +9
Tokyo Standard Time                     +9
North Korea Standard Time               +9
Korea Standard Time                     +9
Yakutsk Standard Time                   +9
Cen. Australia Standard Time            +9
AUS Central Standard Time               +9
E. Australia Standard Time              +10
AUS Eastern Standard Time               +10
West Pacific Standard Time              +10
Tasmania Standard Time                  +10
Vladivostok Standard Time               +10
Lord Howe Standard Time                 +10
Bougainville Standard Time              +11
Russia Time Zone 10                     +11
Magadan Standard Time                   +11
Norfolk Standard Time                   +11
Sakhalin Standard Time                  +11
Central Pacific Standard Time           +11
Russia Time Zone 11                     +12
New Zealand Standard Time               +12
UTC+12                                  +12
Fiji Standard Time                      +12
Chatham Islands Standard Time           +12
Kamchatka Standard Time                 +13
UTC+13                                  +13
Tonga Standard Time                     +13
Samoa Standard Time                     +13
Line Islands Standard Time              +14

Code pour obtenir le décalage horaire:

DateTime dt = Convert.ToDateTime("2020-04-17T09:00:00");
Dictionary<string, int> zoneHour = new Dictionary<string, int>();
var infos = TimeZoneInfo.GetSystemTimeZones();
foreach (var info in infos)
{
    zoneHour.Add(info.Id,
        TimeZoneInfo.ConvertTimeBySystemTimeZoneId(dt, "UTC", info.Id).Subtract(dt).Hours
    );
}

var zoneHourOrder = zoneHour.OrderBy(z => z.Value);
foreach (var kv in zoneHourOrder)
{
    Console.WriteLine(kv.Key.PadRight(40) + (kv.Value > 0 ? "+" + kv.Value : kv.Value.ToString()));
}
yu yang jian
la source