Tôi muốn sử dụng TimeZoneInfo.FindSystemTimeZoneById(String)
phương thức, nhưng tôi không biết những giá trị nào để sử dụng làm đầu vào?
Tôi có thể lấy danh sách các giá trị được id
yêu cầu ở FindSystemTimeZoneById
đâu?
Tôi muốn sử dụng TimeZoneInfo.FindSystemTimeZoneById(String)
phương thức, nhưng tôi không biết những giá trị nào để sử dụng làm đầu vào?
Tôi có thể lấy danh sách các giá trị được id
yêu cầu ở FindSystemTimeZoneById
đâu?
Câu trả lời:
Đây là danh sách trong Windows 8 (tôi trích xuất từ Windows Registry)
Giờ chuẩn Afghanistan Giờ chuẩn Alaska Giờ chuẩn Alaska \ DST động Giờ chuẩn Ả Rập Giờ chuẩn Ả Rập Giờ chuẩn Ả Rập Giờ chuẩn Ả Rập \ DST động Giờ chuẩn Argentina Giờ chuẩn Argentina \ DST động Giờ chuẩn Đại Tây Dương Giờ chuẩn Đại Tây Dương \ DST động AUS Giờ chuẩn miền Trung AUS Giờ chuẩn miền Đông AUS Giờ chuẩn miền Đông \ Dynamic DST Giờ chuẩn Azerbaijan Giờ chuẩn Azores Giờ chuẩn Azores \ DST động Giờ chuẩn Bahia Giờ chuẩn Bahia \ DST động Giờ chuẩn Bangladesh Giờ chuẩn Bangladesh \ DST động Giờ chuẩn miền Trung Canada Giờ chuẩn Cape Verde Giờ chuẩn Caucasus Giờ chuẩn Caucasus \ DST động Cen. Giờ chuẩn Úc Cen. Giờ chuẩn Úc \ DST động Giờ chuẩn Trung Mỹ Giờ chuẩn Trung Á Giờ chuẩn miền Trung Brazil Giờ chuẩn miền Trung Braxin \ DST động Giờ chuẩn Trung Âu Giờ chuẩn Trung Âu Giờ chuẩn Trung Thái Bình Dương Giờ chuẩn miền Trung Giờ chuẩn miền Trung \ DST động Giờ chuẩn miền Trung (Mexico) Giờ chuẩn Trung Quốc Dateline Standard Time E. Giờ chuẩn Châu Phi E. Giờ chuẩn Úc E. Giờ chuẩn Châu Âu E. Giờ chuẩn Nam Mỹ E. Giờ chuẩn Nam Mỹ \ DST động giờ chuẩn phương Đông Giờ chuẩn miền Đông \ DST động Giờ chuẩn Ai Cập Giờ chuẩn Ai Cập \ DST động Giờ chuẩn Ekaterinburg Giờ chuẩn Ekaterinburg \ Dynamic DST Giờ chuẩn Fiji Giờ chuẩn Fiji \ DST động Giờ chuẩn FLE Giờ chuẩn Georgia Giờ chuẩn GMT Giờ chuẩn Greenland Giờ chuẩn Greenland \ DST động Giờ chuẩn Greenwich Giờ chuẩn GTB Giờ chuẩn Hawaii Giờ chuẩn Ấn Độ Giờ chuẩn Iran Giờ chuẩn Iran \ DST động Giờ chuẩn Israel Giờ chuẩn Israel \ DST động Giờ chuẩn Jordan Giờ chuẩn Jordan \ Dynamic DST Giờ chuẩn Kaliningrad Giờ chuẩn Kaliningrad \ Dynamic DST Giờ chuẩn Kamchatka Giờ chuẩn Hàn Quốc Giờ chuẩn Libya Giờ chuẩn Libya \ DST động Giờ chuẩn Magadan Giờ chuẩn Magadan \ DST động Giờ chuẩn Mauritius Giờ chuẩn Mauritius \ Dynamic DST Giờ chuẩn giữa Đại Tây Dương Giờ chuẩn Trung Đông Giờ chuẩn Trung Đông \ DST động Giờ chuẩn Montevideo Giờ chuẩn Montevideo \ Dynamic DST Giờ chuẩn Maroc Giờ chuẩn Morocco \ Dynamic DST Giờ chuẩn miền núi Giờ chuẩn miền núi \ DST động Giờ chuẩn miền núi (Mexico) Giờ chuẩn Myanmar N. Giờ chuẩn Trung Á N. Giờ chuẩn Trung Á \ Dynamic DST Giờ chuẩn Namibia Giờ chuẩn Namibia \ DST động Giờ chuẩn Nepal Giờ chuẩn New Zealand Giờ chuẩn New Zealand \ DST động Giờ chuẩn Newfoundland Giờ chuẩn Newfoundland \ DST động Giờ chuẩn Đông Bắc Á Giờ chuẩn Đông Bắc Á \ Dynamic DST Giờ chuẩn Bắc Á Giờ chuẩn Bắc Á \ Dynamic DST Giờ chuẩn Thái Bình Dương SA Giờ chuẩn Thái Bình Dương SA \ Dynamic DST múi giờ Thái Bình Dương Giờ chuẩn Thái Bình Dương \ DST động Giờ chuẩn Thái Bình Dương (Mexico) Giờ chuẩn Pakistan Giờ chuẩn Pakistan \ Dynamic DST Giờ chuẩn Paraguay Giờ chuẩn Paraguay \ DST động Giờ chuẩn lãng mạn Giờ chuẩn Nga Giờ chuẩn Nga \ DST động SA Giờ chuẩn miền Đông SA Giờ chuẩn Thái Bình Dương SA Giờ chuẩn phương Tây Giờ chuẩn Samoa Giờ chuẩn Samoa \ DST động Giờ chuẩn Đông Nam Á Giờ chuẩn Singapore Giờ chuẩn Nam Phi Giờ chuẩn Sri Lanka Giờ chuẩn Syria Giờ chuẩn Syria \ Dynamic DST Giờ chuẩn Đài Bắc Giờ chuẩn Tasmania Giờ chuẩn Tasmania \ Dynamic DST Giờ chuẩn Tokyo Giờ chuẩn Tonga Giờ chuẩn Thổ Nhĩ Kỳ Giờ chuẩn Thổ Nhĩ Kỳ \ Dynamic DST Giờ chuẩn Ulaanbaatar Giờ chuẩn miền Đông Hoa Kỳ Giờ chuẩn miền Đông Hoa Kỳ \ DST động Giờ chuẩn miền núi Hoa Kỳ UTC UTC + 12 UTC-02 UTC-11 Giờ chuẩn Venezuela Giờ chuẩn Venezuela \ Dynamic DST Giờ chuẩn Vladivostok Giờ chuẩn Vladivostok \ DST động W. Giờ chuẩn Úc W. Giờ chuẩn Úc \ Dynamic DST W. Giờ chuẩn Trung Phi W. Giờ chuẩn Châu Âu Giờ chuẩn Tây Á Giờ chuẩn Tây Thái Bình Dương Giờ chuẩn Yakutsk Giờ chuẩn Yakutsk \ DST động
GMT Standard Time
( stackoverflow.com/questions/4034923/… ).
Bạn có thể tìm nạp chúng từ một danh sách tĩnh trong TimeZoneInfo
lớp
var infos = TimeZoneInfo.GetSystemTimeZones();
foreach (var info in infos)
{
Console.WriteLine(info.Id);
}
Thí dụ:
var tzInfo = TimeZoneInfo.FindSystemTimeZoneById("New Zealand Standard Time");
Hoặc nếu bạn chỉ muốn có một danh sách id của múi giờ như DJ KRAZE đã đề xuất
var timeZoneIds = TimeZoneInfo.GetSystemTimeZones().Select(t => t.Id);
Các múi giờ có sẵn là:
Console.WriteLine(string.Join("\n",TimeZoneInfo.GetSystemTimeZones().Select(x=>x.Id)));
Kết quả:
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
Hãy xem phương thức tĩnh trên phương thức TimeZoneInfo
được gọi TimeZoneInfo.GetSystemTimeZones()
.
Thao tác này sẽ trả về một danh sách tất cả TimeZoneInfo
trên hệ điều hành của bạn từ Registry. Tất cả chúng được lưu trữ dưới: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
.
Một ví dụ là "Giờ chuẩn GMT" cho múi giờ "Dublin, Edinburgh, Lisbon, London".
Tài liệu mới nhất của Microsoft, với danh sách những tài liệu này, có thể được tìm thấy tại https://support.microsoft.com/en-gb/help/973627/microsoft-time-zone-index-values
Chuỗi ID múi giờ hiện tại như sau (nếu bạn muốn xem chênh lệch thời gian thực tế của xem chỉ số hex cho mỗi ID múi giờ thì hãy nhấp vào liên kết ở trên):
Giờ chuẩn Samoa
Giờ chuẩn Alaska
Giờ chuẩn miền núi
Giờ chuẩn miền núi Hoa Kỳ
Giờ chuẩn miền Trung Canada
Giờ chuẩn Trung Mỹ
Giờ chuẩn miền Đông Hoa Kỳ
Giờ chuẩn Đại Tây Dương
Giờ chuẩn Thái Bình Dương SA
E. Giờ chuẩn Nam Mỹ
Giờ chuẩn Greenland
Giờ chuẩn Azores
Giờ chuẩn GMT
Giờ chuẩn Trung Âu
Giờ chuẩn lãng mạn
W. Giờ chuẩn Trung Phi
Giờ chuẩn Ai Cập
Giờ chuẩn GTB
Giờ chuẩn Nam Phi
Giờ chuẩn Ả Rập
Giờ chuẩn Ả Rập
Giờ chuẩn Ả Rập
Nhà nước Hồi giáo chuyển tiếp Giờ chuẩn Afghanistan
Giờ chuẩn Tây Á
Giờ chuẩn Nepal
Giờ chuẩn Sri Lanka
Giờ chuẩn Myanmar
Giờ chuẩn Bắc Á
Giờ chuẩn Singapore
W. Giờ chuẩn Úc
Giờ chuẩn Hàn Quốc
Giờ chuẩn Yakutsk
Cen. Giờ chuẩn Úc
E. Giờ chuẩn Úc
Giờ chuẩn Vladivostok
Giờ chuẩn Trung Thái Bình Dương
Giờ chuẩn New Zealand
Giờ chuẩn Azerbaijan
Giờ chuẩn Jordan
Giờ chuẩn miền núi (Mexico)
Giờ chuẩn Namibia
Giờ chuẩn miền Trung Brazil
Giờ chuẩn Armenia
Giờ chuẩn Argentina
Giờ chuẩn Pakistan
UTC
Giờ chuẩn Kamchatka
Giống như những người khác đã nói, bạn có thể tìm thấy danh sách bằng cách lặp lại TimeZoneInfo.GetSystemTimeZones()
để tìm chuỗi bạn muốn sử dụng. Điều đó có nghĩa là, nếu bạn chỉ có thông tin về sự khác biệt thời gian (như GMT + 9 hoặc GMT-10) và không thể tìm thấy múi giờ của mình sau khi lặp lại Múi giờ, bạn có thể muốn xem url sau để xem bạn cần múi giờ nào
https: / /msdn.microsoft.com/en-US/library/ms912391(v=winembedded.11).aspx
Bạn có thể sử dụng mã đó bên dưới
using System;
namespace TimeZoneIds
{
class Program
{
static void Main(string[] args)
{
foreach (TimeZoneInfo z in TimeZoneInfo.GetSystemTimeZones())
Console.WriteLine(z.Id);
}
}
}
Một phương pháp để chuyển đổi từ múi giờ này sang múi giờ khác:
DateTime n = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(datetime, "sourceTimeZoneId", "destinationTimeZoneId");
Tôi đang sử dụng Win10 và tôi liệt kê Time Zone Id
với 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
Mã nhận chênh lệch múi giờ:
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()));
}
Để có danh sách múi giờ mới nhất, hãy sử dụng tzutil từ Windows:
tzutil / l
Tại đây, bạn có thể tìm thấy danh sách Id Múi giờ chính thức từ Microsoft trong MSDN: https://docs.microsoft.com/en-us/windows-hardware/manthersure/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