What value should I pass into TimeZoneInfo.FindSystemTimeZoneById(String)?

C#.NetTimezone

C# Problem Overview


I want to use the TimeZoneInfo.FindSystemTimeZoneById(String) method, but I don't know what values to use as the input?

Where can I get a list of values for id required for FindSystemTimeZoneById?

C# Solutions


Solution 1 - C#

Here is the list in Windows 8 (I extracted from Windows Registry)

Afghanistan Standard Time
Alaskan Standard Time
Alaskan Standard Time\Dynamic DST
Arab Standard Time
Arabian Standard Time
Arabic Standard Time
Arabic Standard Time\Dynamic DST
Argentina Standard Time
Argentina Standard Time\Dynamic DST
Atlantic Standard Time
Atlantic Standard Time\Dynamic DST
AUS Central Standard Time
AUS Eastern Standard Time
AUS Eastern Standard Time\Dynamic DST
Azerbaijan Standard Time
Azores Standard Time
Azores Standard Time\Dynamic DST
Bahia Standard Time
Bahia Standard Time\Dynamic DST
Bangladesh Standard Time
Bangladesh Standard Time\Dynamic DST
Canada Central Standard Time
Cape Verde Standard Time
Caucasus Standard Time
Caucasus Standard Time\Dynamic DST
Cen. Australia Standard Time
Cen. Australia Standard Time\Dynamic DST
Central America Standard Time
Central Asia Standard Time
Central Brazilian Standard Time
Central Brazilian Standard Time\Dynamic DST
Central Europe Standard Time
Central European Standard Time
Central Pacific Standard Time
Central Standard Time
Central Standard Time\Dynamic DST
Central Standard Time (Mexico)
China Standard Time
Dateline Standard Time
E. Africa Standard Time
E. Australia Standard Time
E. Europe Standard Time
E. South America Standard Time
E. South America Standard Time\Dynamic DST
Eastern Standard Time
Eastern Standard Time\Dynamic DST
Egypt Standard Time
Egypt Standard Time\Dynamic DST
Ekaterinburg Standard Time
Ekaterinburg Standard Time\Dynamic DST
Fiji Standard Time
Fiji Standard Time\Dynamic DST
FLE Standard Time
Georgian Standard Time
GMT Standard Time
Greenland Standard Time
Greenland Standard Time\Dynamic DST
Greenwich Standard Time
GTB Standard Time
Hawaiian Standard Time
India Standard Time
Iran Standard Time
Iran Standard Time\Dynamic DST
Israel Standard Time
Israel Standard Time\Dynamic DST
Jordan Standard Time
Jordan Standard Time\Dynamic DST
Kaliningrad Standard Time
Kaliningrad Standard Time\Dynamic DST
Kamchatka Standard Time
Korea Standard Time
Libya Standard Time
Libya Standard Time\Dynamic DST
Magadan Standard Time
Magadan Standard Time\Dynamic DST
Mauritius Standard Time
Mauritius Standard Time\Dynamic DST
Mid-Atlantic Standard Time
Middle East Standard Time
Middle East Standard Time\Dynamic DST
Montevideo Standard Time
Montevideo Standard Time\Dynamic DST
Morocco Standard Time
Morocco Standard Time\Dynamic DST
Mountain Standard Time
Mountain Standard Time\Dynamic DST
Mountain Standard Time (Mexico)
Myanmar Standard Time
N. Central Asia Standard Time
N. Central Asia Standard Time\Dynamic DST
Namibia Standard Time
Namibia Standard Time\Dynamic DST
Nepal Standard Time
New Zealand Standard Time
New Zealand Standard Time\Dynamic DST
Newfoundland Standard Time
Newfoundland Standard Time\Dynamic DST
North Asia East Standard Time
North Asia East Standard Time\Dynamic DST
North Asia Standard Time
North Asia Standard Time\Dynamic DST
Pacific SA Standard Time
Pacific SA Standard Time\Dynamic DST
Pacific Standard Time
Pacific Standard Time\Dynamic DST
Pacific Standard Time (Mexico)
Pakistan Standard Time
Pakistan Standard Time\Dynamic DST
Paraguay Standard Time
Paraguay Standard Time\Dynamic DST
Romance Standard Time
Russian Standard Time
Russian Standard Time\Dynamic DST
SA Eastern Standard Time
SA Pacific Standard Time
SA Western Standard Time
Samoa Standard Time
Samoa Standard Time\Dynamic DST
SE Asia Standard Time
Singapore Standard Time
South Africa Standard Time
Sri Lanka Standard Time
Syria Standard Time
Syria Standard Time\Dynamic DST
Taipei Standard Time
Tasmania Standard Time
Tasmania Standard Time\Dynamic DST
Tokyo Standard Time
Tonga Standard Time
Turkey Standard Time
Turkey Standard Time\Dynamic DST
Ulaanbaatar Standard Time
US Eastern Standard Time
US Eastern Standard Time\Dynamic DST
US Mountain Standard Time
UTC
UTC+12
UTC-02
UTC-11
Venezuela Standard Time
Venezuela Standard Time\Dynamic DST
Vladivostok Standard Time
Vladivostok Standard Time\Dynamic DST
W. Australia Standard Time
W. Australia Standard Time\Dynamic DST
W. Central Africa Standard Time
W. Europe Standard Time
West Asia Standard Time
West Pacific Standard Time
Yakutsk Standard Time
Yakutsk Standard Time\Dynamic DST

Solution 2 - C#

You can fetch them from a static list in the TimeZoneInfo class

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

Example:

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

Or if you just want a list of the timezone id's like DJ KRAZE suggested

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

Solution 3 - C#

The available timezones are:

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

Result:

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

Solution 4 - C#

Have a look at the static method on TimeZoneInfo called TimeZoneInfo.GetSystemTimeZones() method.

This will return a list of all TimeZoneInfo's on your operating system from the Registry. They are all stored under: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones.

An example is "GMT Standard Time" for the "Dublin, Edinburgh, Lisbon, London" time zone.

Solution 5 - C#

To get the most current list of time zones, use tzutil from Windows: > tzutil /l

Here you can find the official Time Zone Ids list from 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

Solution 6 - C#

The latest Microsoft documentation, with a list of these, can be found at https://support.microsoft.com/en-gb/help/973627/microsoft-time-zone-index-values

The time zone ID strings are currently as follows (if you want to see the actual time difference of see the hex index for each time zone ID then click the above link):

> Samoa Standard Time > > Alaskan Standard Time > > Mountain Standard Time > > U.S. Mountain Standard Time > > Canada Central Standard Time > > Central America Standard Time > > U.S. Eastern Standard Time > > Atlantic Standard Time > > Pacific S.A. Standard Time > > E. South America Standard Time > > Greenland Standard Time > > Azores Standard Time > > GMT Standard Time > > Central Europe Standard Time > > Romance Standard Time > > W. Central Africa Standard Time > > Egypt Standard Time > > GTB Standard Time > > South Africa Standard Time > > Arab Standard Time > > Arabic Standard Time > > Arabian Standard Time > > Transitional Islamic State of Afghanistan Standard Time > > West Asia Standard Time > > Nepal Standard Time > > Sri Lanka Standard Time > > Myanmar Standard Time > > North Asia Standard Time > > Singapore Standard Time > > W. Australia Standard Time > > Korea Standard Time > > Yakutsk Standard Time > > Cen. Australia Standard Time > > E. Australia Standard Time > > Vladivostok Standard Time > > Central Pacific Standard Time > > New Zealand Standard Time > > Azerbaijan Standard TimeĀ  > > Jordan Standard Time > > Mountain Standard Time (Mexico) > > Namibia Standard Time > > Central Brazilian Standard Time > > Armenian Standard Time > > Argentina Standard Time > > Pakistan Standard Time > > UTC > > Kamchatka Standard Time

Solution 7 - C#

Like others have said, you can find the list by iterating TimeZoneInfo.GetSystemTimeZones() to find the string you want to use. That said, if you only have information on the time difference (like GMT+9 or GMT-10 ) and cannot find your timezone after iterating the Timezones, you might want to see the following url to see which timezone do you need https://msdn.microsoft.com/en-US/library/ms912391(v=winembedded.11).aspx

Solution 8 - C#

Or you can pass the TimeZoneInfo.Local.Id like this:

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

Solution 9 - C#

You can use that code below

using System;

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

Solution 10 - C#

> What value should I pass into > TimeZoneInfo.FindSystemTimeZoneById(String)?

The answer is it depends. Windows and MacOS/Linux have different id's for these.

> Where can I get a list of values for id required for > FindSystemTimeZoneById?

I think MacOS/Linux uses the IANA id's, which you can find listed on NodaTime docs, or I guess you can find them somewhere on IANA official docs. For Windows id's, check out Microsoft Time Zone Index Values

Example

Running the follow code on my Macbook is fine var europeSthlm = TimeZoneInfo.FindSystemTimeZoneById("Europe/Stockholm");

Whereas running var wEuropeStdTime = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"); throws a System.TimeZoneNotFoundException: The time zone ID 'W. Europe Standard Time' was not found on the local computer.

Further reading

Here you can see how you can retrieve a list of time zones by using NodaTime, and how to get the id's on Windows and Mac respectively: https://stackoverflow.com/a/19697827/2874896

Solution 11 - C#

A method to cnvert from one time zone to another:

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

I'm on Win10, and I list Time Zone Id with 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 to get time difference:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Question001View Question on Stackoverflow
Solution 1 - C#mohghaderiView Answer on Stackoverflow
Solution 2 - C#sa_ddam213View Answer on Stackoverflow
Solution 3 - C#Angelo OrtegaView Answer on Stackoverflow
Solution 4 - C#DaveShawView Answer on Stackoverflow
Solution 5 - C#Gregory LView Answer on Stackoverflow
Solution 6 - C#d219View Answer on Stackoverflow
Solution 7 - C#dumdumView Answer on Stackoverflow
Solution 8 - C#PabinatorView Answer on Stackoverflow
Solution 9 - C#Jefferson Bien-AimeView Answer on Stackoverflow
Solution 10 - C#Jim AhoView Answer on Stackoverflow
Solution 11 - C#yu yang JianView Answer on Stackoverflow