Qual valor devo passar para TimeZoneInfo.FindSystemTimeZoneById (String)?

Respostas:

93

Aqui está a lista no Windows 8 (extraí do Registro do Windows)

Hora padrão do Afeganistão
Hora Padrão do Alasca
Horário padrão do Alasca \ DST dinâmico
Horário Padrão Árabe
Horário Padrão da Arábia
Hora Padrão Árabe
Horário padrão árabe \ DST dinâmico
Hora padrão da Argentina
Horário padrão da Argentina \ DST dinâmico
Atlantic Standard Time
Atlantic Standard Time \ Dynamic DST
AUS Central Standard Time
AUS Eastern Standard Time
AUS Eastern Standard Time \ Dynamic DST
Hora Padrão do Azerbaijão
Hora Padrão dos Açores
Hora Padrão dos Açores \ DST Dinâmico
Hora padrão da Bahia
Hora Padrão da Bahia \ DST Dinâmico
Hora Padrão de Bangladesh
Horário padrão de Bangladesh \ DST dinâmico
Hora Padrão Central do Canadá
Hora Padrão de Cabo Verde
Hora Padrão do Cáucaso
Hora padrão do Cáucaso \ DST dinâmico
Cen. Hora Padrão da Austrália
Cen. Horário padrão da Austrália \ DST dinâmico
Hora Padrão da América Central
Hora Padrão da Ásia Central
Hora Padrão do Brasil Central
Hora Padrão do Brasil Central \ DST Dinâmico
Hora Padrão da Europa Central
Hora Padrão da Europa Central
Hora Padrão do Pacífico Central
Hora Padrão Central
Horário padrão central \ DST dinâmico
Hora Padrão Central (México)
Hora Padrão da China
Dateline, hora padrão
E. Hora Padrão da África
E. Horário padrão da Austrália
E. Hora Padrão da Europa
E. Hora Padrão da América do Sul
E. Horário padrão da América do Sul \ DST dinâmico
Hora Padrão do Leste
Hora Padrão do Leste \ DST Dinâmico
Hora padrão do Egito
Horário padrão do Egito \ DST dinâmico
Hora Padrão de Ekaterinburg
Hora padrão de Ekaterinburg \ DST dinâmico
Hora Padrão de Fiji
Horário padrão de Fiji \ DST dinâmico
FLE hora padrão
Horário Padrão da Geórgia
GMT hora padrão
Horário Padrão da Groenlândia
Horário padrão da Groenlândia \ DST dinâmico
Greenwich Standard Time
GTB hora padrão
Hora padrão havaiana
Hora Padrão da Índia
Hora Padrão do Irã
Horário padrão do Irã \ DST dinâmico
Hora padrão de Israel
Horário padrão de Israel \ DST dinâmico
Jordan Time Standard
Jordan Time Standard \ Dynamic DST
Hora Padrão de Kaliningrado
Hora padrão de Kaliningrado \ DST dinâmico
Hora padrão de Kamchatka
Hora Padrão da Coreia
Horário Padrão da Líbia
Horário padrão da Líbia \ DST dinâmico
Hora Padrão de Magadan
Horário padrão de Magadan \ DST dinâmico
Hora Padrão das Maurícias
Hora Padrão das Maurícias \ DST Dinâmico
Hora Padrão do Meio Atlântico
Hora Padrão do Oriente Médio
Horário padrão do Oriente Médio \ DST dinâmico
Hora Padrão de Montevidéu
Horário padrão de Montevidéu \ DST dinâmico
Hora Padrão do Marrocos
Horário padrão do Marrocos \ DST dinâmico
Mountain Standard Time
Horário padrão das montanhas \ DST dinâmico
Hora Padrão das Montanhas (México)
Hora Padrão de Mianmar
N. Hora Padrão da Ásia Central
N. Hora Padrão da Ásia Central \ DST Dinâmico
Hora Padrão da Namíbia
Horário padrão da Namíbia \ DST dinâmico
Hora padrão do Nepal
Hora Padrão da Nova Zelândia
Horário padrão da Nova Zelândia \ DST dinâmico
Hora Padrão da Terra Nova
Horário padrão da Terra Nova \ DST dinâmico
Hora Padrão do Norte da Ásia Leste
Horário padrão do Norte da Ásia Leste \ DST dinâmico
Hora Padrão do Norte da Ásia
Horário padrão da Ásia do Norte \ DST dinâmico
Horário padrão do Pacífico SA
Horário padrão do Pacífico SA \ DST dinâmico
Horário padrão do Pacífico
Horário padrão do Pacífico \ DST dinâmico
Horário padrão do Pacífico (México)
Horário Padrão do Paquistão
Horário padrão do Paquistão \ DST dinâmico
Hora padrão do Paraguai
Horário padrão do Paraguai \ DST dinâmico
Hora Padrão do Romance
Hora Padrão da Rússia
Hora padrão da Rússia \ DST dinâmico
SA Eastern Standard Time
SA Pacific Standard Time
SA Western Standard Time
Hora Padrão de Samoa
Horário padrão de Samoa \ DST dinâmico
SE Ásia, hora padrão
Hora Padrão de Cingapura
Hora Padrão da África do Sul
Hora Padrão do Sri Lanka
Hora Padrão da Síria
Horário padrão da Síria \ DST dinâmico
Hora Padrão de Taipei
Hora Padrão da Tasmânia
Hora Padrão da Tasmânia \ DST Dinâmico
Hora Padrão de Tóquio
Hora Padrão de Tonga
Hora padrão da Turquia
Hora padrão da Turquia \ DST dinâmico
Hora Padrão de Ulaanbaatar
US Eastern Standard Time
Horário padrão do leste dos EUA \ DST dinâmico
Hora Padrão das Montanhas dos EUA
UTC
UTC + 12
UTC-02
UTC-11
Hora Padrão da Venezuela
Horário padrão da Venezuela \ DST dinâmico
Hora Padrão de Vladivostok
Horário padrão de Vladivostok \ DST dinâmico
W. Austrália, hora padrão
W. Austrália, hora padrão \ DST dinâmico
W. Central Africa Time Standard
W. Europa, hora padrão
Hora Padrão da Ásia Ocidental
Hora Padrão do Pacífico Oeste
Hora padrão de Yakutsk
Hora padrão de Yakutsk \ DST dinâmico
Mohghaderi
fonte
5
Embora o Reino Unido não pareça aparecer (GMT / BST), é aparentemente GMT Standard Time( stackoverflow.com/questions/4034923/… ).
SharpC
3
Para aqueles que estão se perguntando o que é DST dinâmico ... blogs.msdn.microsoft.com/bclteam/2007/06/07/…
Mick de
Ótima ajuda! Eu também fui preciso! Na verdade, isso me ajudou a reunir para meu aplicativo: ~ private static TimeZoneInfo INDIA_ZONE = TimeZoneInfo.FindSystemTimeZoneById ("Horário padrão da ÍNDIA"); ~
PatsonLeaner
2
Há uma diferença entre "AUS Eastern Standard Time" acima e "E. Australia Standard Time" retornado por TimeZoneInfo.GetSystemTimeZones (). O primeiro leva em consideração o horário de verão e o último não. Consulte dotnetfiddle.net/k3yKN4
Martin Capodici
1
No mundo de plataforma cruzada do .NET Core, o TimeZone ID depende de onde o código está sendo executado. Por exemplo, em um Mac, Sydney é "Austrália / Sydney", no Windows 10, o fuso horário correspondente é "E. Australia Standard Time".
Sudhanshu Mishra
38

Você pode obtê-los de uma lista estática na TimeZoneInfoclasse

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

Exemplo:

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

Ou se você quiser apenas uma lista de ids de fuso horário, como DJ KRAZE sugeriu

  var timeZoneIds = TimeZoneInfo.GetSystemTimeZones().Select(t => t.Id);
sa_ddam213
fonte
+1 eu criaria var lstTimeZones = new List <string> (); em seguida, substitua console.WriteLine (info.Id); com lstTimeZones.Add (info.Id); dentro
MethodMan
15

Os fusos horários disponíveis são:

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

Resultado:

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
fonte
9

Dê uma olhada no método estático no método TimeZoneInfochamado TimeZoneInfo.GetSystemTimeZones().

Isso retornará uma lista de todos TimeZoneInfoos arquivos em seu sistema operacional do Registro. Eles são armazenados em: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones.

Um exemplo é "GMT Standard Time" para o fuso horário "Dublin, Edinburgh, Lisbon, London".

DaveShaw
fonte
2

A documentação mais recente da Microsoft, com uma lista delas, pode ser encontrada em https://support.microsoft.com/en-gb/help/973627/microsoft-time-zone-index-values

As strings de ID de fuso horário são atualmente as seguintes (se você quiser ver a diferença de tempo real ou consulte o índice hexadecimal para cada ID de fuso horário, clique no link acima):

Hora Padrão de Samoa

Hora Padrão do Alasca

Mountain Standard Time

Hora Padrão das Montanhas dos EUA

Hora Padrão Central do Canadá

Hora Padrão da América Central

US Eastern Standard Time

Atlantic Standard Time

Horário padrão do Pacífico SA

E. Hora Padrão da América do Sul

Horário Padrão da Groenlândia

Hora Padrão dos Açores

GMT hora padrão

Hora Padrão da Europa Central

Hora Padrão do Romance

W. Central Africa Time Standard

Hora padrão do Egito

GTB hora padrão

Hora Padrão da África do Sul

Horário Padrão Árabe

Hora Padrão Árabe

Horário Padrão da Arábia

Estado islâmico de transição do Afeganistão, hora padrão

Hora Padrão da Ásia Ocidental

Hora padrão do Nepal

Hora Padrão do Sri Lanka

Hora Padrão de Mianmar

Hora Padrão do Norte da Ásia

Hora Padrão de Cingapura

W. Austrália, hora padrão

Hora Padrão da Coreia

Hora padrão de Yakutsk

Cen. Hora Padrão da Austrália

E. Horário padrão da Austrália

Hora Padrão de Vladivostok

Hora Padrão do Pacífico Central

Hora Padrão da Nova Zelândia

Hora Padrão do Azerbaijão 

Jordan Time Standard

Hora Padrão das Montanhas (México)

Hora Padrão da Namíbia

Hora Padrão do Brasil Central

Hora padrão da Armênia

Hora padrão da Argentina

Horário Padrão do Paquistão

UTC

Hora padrão de Kamchatka

d219
fonte
1

Como outros disseram, você pode encontrar a lista iterando TimeZoneInfo.GetSystemTimeZones()para encontrar a string que deseja usar. Dito isso, se você tiver apenas informações sobre a diferença de fuso horário (como GMT + 9 ou GMT-10) e não conseguir encontrar seu fuso horário após iterar os fusos horários, você pode querer ver o seguinte url para ver de qual fuso horário você precisa https: / /msdn.microsoft.com/en-US/library/ms912391(v=winembedded.11).aspx

bobo
fonte
1

Ou você pode passar TimeZoneInfo.Local.Idassim:

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

Você pode usar esse código abaixo

using System;

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

Para obter a lista mais atual de fusos horários, use tzutil do Windows:

tzutil / l

Aqui você pode encontrar a lista oficial de IDs de fuso horário da Microsoft no 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
Gregory L
fonte
0

Um método para converter de um fuso horário para outro:

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

Estou no Win10 e me listo Time Zone Idcom 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

Código para obter a diferença horária:

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
fonte