我应该传入什么值TimeZoneInfo.FindSystemTimeZoneById(string)?

我想使用TimeZoneInfo.FindSystemTimeZoneById(String)方法,但我不知道用什么值作为input?

我在哪里可以得到FindSystemTimeZoneById所需的id的值列表?

这里是Windows 8中的列表(我从Windowsregistry中提取)

阿富汗标准时间
阿拉斯加标准时间
阿拉斯加标准时间\dynamicDST
阿拉伯标准时间
阿拉伯标准时间
阿拉伯标准时间
阿拉伯标准时间\dynamicDST
阿根廷标准时间
阿根廷标准时间\dynamicDST
大西洋标准时间
大西洋标准时间\dynamicDST
澳大利亚中部标准时间
澳洲东部标准时间
 AUS东部标准时间\dynamicDST
阿塞拜疆标准时间
亚速尔群岛标准时间
亚速尔群岛标准时间\dynamicDST
巴伊亚标准时间
巴伊亚标准时间\dynamicDST
孟加拉国标准时间
孟加拉国标准时间\dynamicDST
加拿大中部标准时间
佛得angular标准时间
高加索标准时间
高加索标准时间\dynamicDST
岑。 澳大利亚标准时间
岑。 澳大利亚标准时间\dynamicDST
中美洲标准时间
中亚标准时间
巴西中部标准时间
巴西中部标准时间\dynamicDST
中欧标准时间
中欧标准时间
中太平洋标准时间
中央标准时间
中央标准时间\dynamicDST
中部标准时间(墨西哥)
中国标准时间
date线标准时间
 E.非洲标准时间
 E.澳大利亚标准时间
 E.欧洲标准时间
 E.南美标准时间
 E.南美标准时间\dynamicDST
东部标准时间
东部标准时间\dynamicDST
埃及标准时间
埃及标准时间\dynamicDST
叶卡捷琳堡标准时间
叶卡捷琳堡标准时间\dynamicDST
斐济标准时间
斐济标准时间\dynamicDST
 FLE标准时间
格鲁吉亚标准时间
 GMT标准时间
格陵兰标准时间
格陵兰标准时间\dynamicDST
格林威治标准时间
 GTB标准时间
夏威夷标准时间
印度标准时间
伊朗标准时间
伊朗标准时间\dynamicDST
以色列标准时间
以色列标准时间\dynamicDST
约旦标准时间
约旦标准时间\dynamicDST
加里宁格勒标准时间
加里宁格勒标准时间\dynamicDST
堪察加标准时间
韩国标准时间
利比亚标准时间
利比亚标准时间\dynamicDST
马加丹标准时间
马加丹标准时间\dynamicDST
毛里求斯标准时间
毛里求斯标准时间\dynamicDST
大西洋中部标准时间
中东标准时间
中东标准时间\dynamicDST
蒙得维的亚标准时间
蒙得维的亚标准时间\dynamicDST
摩洛哥标准时间
摩洛哥标准时间\dynamicDST
山标准时间
山标准时间\dynamicDST
山区标准时间(墨西哥)
缅甸标准时间
 N.中亚标准时间
 N.中亚标准时间\dynamicDST
纳米比亚标准时间
纳米比亚标准时间\dynamicDST
尼泊尔标准时间
新西兰标准时间
新西兰标准时间\dynamicDST
纽芬兰标准时间
纽芬兰标准时间\dynamicDST
北亚东部标准时间
北亚东部标准时间\dynamicDST
北亚标准时间
北亚标准时间\dynamicDST
太平洋标准时间
太平洋SA标准时间\dynamicDST
太平洋标准时间
太平洋标准时间\dynamicDST
太平洋标准时间(墨西哥)
巴基斯坦标准时间
巴基斯坦标准时间\dynamicDST
巴拉圭标准时间
巴拉圭标准时间\dynamicDST
浪漫标准时间
俄罗斯标准时间
俄罗斯标准时间\dynamicDST
 SA东部标准时间
 SA太平洋标准时间
 SA西部标准时间
萨摩亚标准时间
萨摩亚标准时间\dynamicDST
东南亚标准时间
新加坡标准时间
南非标准时间
斯里兰卡标准时间
叙利亚标准时间
叙利亚标准时间\dynamicDST
台北标准时间
塔斯马尼亚标准时间
塔斯马尼亚标准时间\dynamicDST
东京标准时间
汤加标准时间
土耳其标准时间
土耳其标准时间\dynamicDST
乌兰巴托标准时间
美国东部标准时间
美国东部标准时间\dynamicDST
美国山标准时间
世界标准时间
 UTC + 12
 UTC-02
 UTC-11
委内瑞拉标准时间
委内瑞拉标准时间\dynamicDST
符拉迪沃斯托克标准时间
符拉迪沃斯托克标准时间\dynamicDST
 W.澳大利亚标准时间
 W.澳大利亚标准时间\dynamicDST
 W.中非标准时间
 W.欧洲标准时间
西亚标准时间
西太平洋标准时间
雅库茨克标准时间
雅库茨克标准时间\dynamicDST

您可以从TimeZoneInfo类的静态列表中获取它们

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

例:

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

或者,如果你只是想要一个时区id列表像DJ KRAZEbuild议

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

看一下TimeZoneInfo TimeZoneInfo.GetSystemTimeZones()方法的静态方法。

这将从registry中返回操作系统上所有TimeZoneInfo的列表。 它们全部存储在: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

例如“都柏林,爱丁堡,里斯本,伦敦”时区的“GMT标准时间”。

可用的时区是:

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

结果:

 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 

和其他人一样,您可以通过迭代TimeZoneInfo.GetSystemTimeZones()来find您想要使用的string。 也就是说,如果只有时间差的信息(例如GMT + 9或GMT-10),并且在迭代时区之后找不到时区,则可能需要查看以下URL以查看您需要哪个时区https / /msdn.microsoft.com/en-US/library/ms912391(v=winembedded.11).aspx

或者你可以像这样传递TimeZoneInfo.Local.Id

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

完整的列表可以在MSDN网站上find:

时区ID(精简版2013)