Quale valore devo passare a TimeZoneInfo.FindSystemTimeZoneById (String)?


Risposte:


93

Ecco l'elenco in Windows 8 (l'ho estratto dal registro di Windows)

Ora solare Afghanistan
Ora solare dell'Alaska
Ora solare dell'Alaska \ DST dinamico
Ora standard araba
Ora solare araba
Ora solare araba
Ora solare araba \ DST dinamico
Ora solare Argentina
Ora solare Argentina \ DST dinamico
Atlantic Standard Time
Atlantic Standard Time \ Dynamic DST
Ora solare AUS Central
AUS Eastern Standard Time
AUS Eastern Standard Time \ Dynamic DST
Ora solare dell'Azerbaigian
Ora solare delle Azzorre
Ora solare delle Azzorre \ DST dinamico
Ora solare Bahia
Ora solare Bahia \ DST dinamico
Ora solare del Bangladesh
Bangladesh Standard Time \ Dynamic DST
Canada Central Standard Time
Ora solare di Capo Verde
Ora solare del Caucaso
Ora standard del Caucaso \ DST dinamico
Cen. Ora solare dell'Australia
Cen. Ora solare Australia \ DST dinamico
Ora solare dell'America centrale
Ora solare dell'Asia centrale
Ora solare brasiliana centrale
Ora solare brasiliana centrale \ DST dinamico
Ora solare dell'Europa centrale
Ora solare dell'Europa centrale
Ora solare del Pacifico centrale
Ora solare centrale
Ora solare centrale \ DST dinamico
Central Standard Time (Messico)
China Standard Time
Dateline Standard Time
Ora solare E. Africa
E. Ora solare dell'Australia
E. Ora solare Europa
E. Ora solare del Sud America
E. Ora solare Sud America \ DST dinamico
Ora solare orientale
Eastern Standard Time \ Dynamic DST
Ora solare dell'Egitto
Egitto Standard Time \ Dynamic DST
Ora solare di Ekaterinburg
Ekaterinburg Standard Time \ Dynamic DST
Ora solare Fiji
Figi Standard Time \ Dynamic DST
FLE Standard Time
Ora solare georgiana
GMT Standard Time
Ora solare della Groenlandia
Ora solare Groenlandia \ DST dinamico
Ora solare di Greenwich
Ora solare GTB
Ora solare hawaiana
Ora standard dell'India
Iran Standard Time
Iran Standard Time \ Dynamic DST
Israele Standard Time
Israele Standard Time \ Dynamic DST
Jordan Standard Time
Jordan Standard Time \ Dynamic DST
Ora solare di Kaliningrad
Ora solare Kaliningrad \ Ora legale dinamica
Ora solare Kamchatka
Ora solare Corea
Ora solare Libia
Ora solare Libia \ DST dinamico
Ora solare Magadan
Ora solare Magadan \ DST dinamico
Ora solare Mauritius
Mauritius Standard Time \ Dynamic DST
Ora solare dell'Atlantico medio
Ora solare del Medio Oriente
Ora solare Medio Oriente \ DST dinamico
Ora solare di Montevideo
Ora solare Montevideo \ DST dinamico
Ora solare del Marocco
Ora solare Marocco \ DST dinamico
Ora solare della montagna
Mountain Standard Time \ Dynamic DST
Mountain Standard Time (Messico)
Ora solare Myanmar
N. Ora solare dell'Asia centrale
N. Ora solare dell'Asia centrale \ DST dinamico
Ora solare Namibia
Namibia Standard Time \ Dynamic DST
Nepal Standard Time
Ora solare della Nuova Zelanda
Ora solare della Nuova Zelanda \ DST dinamico
Ora solare di Terranova
Newfoundland Standard Time \ Dynamic DST
Ora solare dell'Asia settentrionale orientale
Ora solare Asia settentrionale orientale \ DST dinamico
Ora standard dell'Asia settentrionale
Ora solare Asia settentrionale \ DST dinamico
Pacific SA Standard Time
Pacific SA Standard Time \ Dynamic DST
Pacific Standard Time
Pacific Standard Time \ Dynamic DST
Pacific Standard Time (Messico)
Ora solare del Pakistan
Pakistan Standard Time \ Dynamic DST
Ora solare del Paraguay
Paraguay Standard Time \ Dynamic DST
Romance Standard Time
Ora solare russa
Ora solare russa \ DST dinamico
SA Eastern Standard Time
SA Pacific Standard Time
SA Western Standard Time
Ora solare delle Samoa
Samoa Standard Time \ Dynamic DST
Ora solare SE Asia
Ora solare di Singapore
Ora solare del Sudafrica
Ora solare dello Sri Lanka
Ora solare Siria
Ora solare Siria \ DST dinamico
Ora standard di Taipei
Ora solare della Tasmania
Tasmania Standard Time \ Dynamic DST
Ora solare di Tokyo
Tonga Standard Time
Ora solare Turchia
Ora solare Turchia \ DST dinamico
Ora solare di Ulaanbaatar
Ora solare degli Stati Uniti orientali
Ora solare degli Stati Uniti orientali \ DST dinamico
US Mountain Standard Time
UTC
UTC + 12
UTC-02
UTC-11
Ora solare del Venezuela
Venezuela Standard Time \ Dynamic DST
Ora solare di Vladivostok
Vladivostok Standard Time \ Dynamic DST
W. Australia Standard Time
W. Australia Standard Time \ Dynamic DST
W. Ora solare dell'Africa centrale
Ora solare W. Europa
Ora solare dell'Asia occidentale
Ora solare del Pacifico occidentale
Ora solare di Yakutsk
Ora solare di Yakutsk \ DST dinamico

5
Anche se il Regno Unito non sembra apparire (GMT / BST) è apparentemente GMT Standard Time( stackoverflow.com/questions/4034923/… ).
SharpC

3
Per coloro che si chiedono cos'è l'ora legale dinamica .... blogs.msdn.microsoft.com/bclteam/2007/06/07/…
Mick

Ottimo aiuto! Sono stato anche preciso! In realtà mi ha aiutato a raccogliere per la mia applicazione: ~ timeZoneInfo statico privato INDIA_ZONE = TimeZoneInfo.FindSystemTimeZoneById ("Orario standard
dell'India

2
Esiste una differenza tra "AUS Eastern Standard Time" sopra e "E. Australia Standard Time" restituito da TimeZoneInfo.GetSystemTimeZones (). Il primo tiene conto dell'ora legale e il secondo no. Vedi dotnetfiddle.net/k3yKN4
Martin Capodici

1
Nel mondo multipiattaforma di .NET Core, l'ID TimeZone dipende da dove viene eseguito il codice. Ad esempio, su un Mac Sydney è "Australia / Sydney", su Windows 10 il fuso orario corrispondente è "E. Australia Standard Time".
Sudhanshu Mishra

38

Puoi recuperarli da un elenco statico nella TimeZoneInfoclasse

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

Esempio:

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

O se vuoi solo un elenco degli ID del fuso orario come suggerito da DJ KRAZE

  var timeZoneIds = TimeZoneInfo.GetSystemTimeZones().Select(t => t.Id);

+1 Vorrei creare var lstTimeZones = new List <string> (); quindi sostituire console.WriteLine (info.Id); con lstTimeZones.Add (info.Id); inside
MethodMan

15

I fusi orari disponibili sono:

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

Risultato:

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

9

Dai un'occhiata al metodo statico sul metodo TimeZoneInfochiamato TimeZoneInfo.GetSystemTimeZones().

Ciò restituirà un elenco di tutti TimeZoneInfoi file presenti nel sistema operativo dal registro. Essi sono tutti memorizzati sotto: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones.

Un esempio è "GMT Standard Time" per il fuso orario "Dublino, Edimburgo, Lisbona, Londra".


2

L'ultima documentazione Microsoft, con un elenco di queste, è disponibile su https://support.microsoft.com/en-gb/help/973627/microsoft-time-zone-index-values

Le stringhe dell'ID del fuso orario sono attualmente le seguenti (se si desidera vedere la differenza di orario effettiva, vedere l'indice esadecimale per ogni ID del fuso orario, fare clic sul collegamento sopra):

Ora solare delle Samoa

Ora solare dell'Alaska

Ora solare della montagna

US Mountain Standard Time

Canada Central Standard Time

Ora solare dell'America centrale

Ora solare degli Stati Uniti orientali

Atlantic Standard Time

Pacific SA Standard Time

E. Ora solare del Sud America

Ora solare della Groenlandia

Ora solare delle Azzorre

GMT Standard Time

Ora solare dell'Europa centrale

Romance Standard Time

W. Ora solare dell'Africa centrale

Ora solare dell'Egitto

Ora solare GTB

Ora solare del Sudafrica

Ora standard araba

Ora solare araba

Ora solare araba

Ora standard dello Stato islamico di transizione dell'Afghanistan

Ora solare dell'Asia occidentale

Nepal Standard Time

Ora solare dello Sri Lanka

Ora solare Myanmar

Ora standard dell'Asia settentrionale

Ora solare di Singapore

W. Australia Standard Time

Ora solare della Corea

Ora solare di Yakutsk

Cen. Ora solare dell'Australia

E. Ora solare dell'Australia

Ora solare di Vladivostok

Ora solare del Pacifico centrale

Ora solare della Nuova Zelanda

Ora solare dell'Azerbaigian 

Jordan Standard Time

Mountain Standard Time (Messico)

Ora solare Namibia

Ora solare brasiliana centrale

Ora standard armena

Ora solare Argentina

Ora solare del Pakistan

UTC

Ora solare Kamchatka


1

Come altri hanno già detto, puoi trovare l'elenco ripetendo TimeZoneInfo.GetSystemTimeZones()per trovare la stringa che desideri utilizzare. Detto questo, se hai solo informazioni sulla differenza di fuso orario (come GMT + 9 o GMT-10) e non riesci a trovare il tuo fuso orario dopo aver ripetuto i fusi orari, potresti voler vedere il seguente URL per vedere quale fuso orario ti serve https: / /msdn.microsoft.com/en-US/library/ms912391(v=winembedded.11).aspx


1

Oppure puoi passare in TimeZoneInfo.Local.Idquesto modo:

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

1

Puoi usare quel codice qui sotto

using System;

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

1

Per ottenere l'elenco più aggiornato dei fusi orari, usa tzutil da Windows:

tzutil / l

Qui puoi trovare l'elenco ufficiale degli ID del fuso orario di Microsoft in 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

0

Un metodo per passare da un fuso orario a un altro:

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

Sono su Win10 e elenco Time Zone Idcon 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

Codice per ottenere la differenza di orario:

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()));
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.