的TimeZoneInfo和国家代码

问题描述:

我期待实现与签名类似如下的功能:的TimeZoneInfo和国家代码

bool IsTimeZoneValid(string countryCode, DateTime localTime); 

的目的是确定该国是否具有在本地时间将是有效的时间区,因为我们知道当前的UTC时间。比方说,为了争辩,“有效”意味着当转换为UTC时,时间与我们认为时间相差30分钟。

例如,现在说它现在是03/08/2009 18:25:00 UTC,然后给予以下方法调用澳大利亚,它应该返回true,因为这是在“东部标准时间”区域中的有效时间:

IsTimeZoneValid("AU", DateTime.Parse("04/08/2009 03:25:00")); 

但是,法国的以下呼吁应该失败,因为这不是法国时区的有效时间。

IsTimeZoneValid("FR", DateTime.Parse("04/08/2009 03:25:00")); 

这需要准确,并考虑到夏令时等

.NET 3.5包括新TimeZoneInfo类能为我做了很多的转换,如果我知道是什么时区存在于一个特定的国家,但我似乎无法找到任何内置的查找。我错过了什么,或者我将不得不手动创建一个国家到时区映射表?

重申,我的问题是:给定一个国家代码,我怎样才能得到一个时区列表。另外,还有另一种方法来处理我错过的?

+0

+1我也真的希望能够得到有效的时区某一国家。 – 2009-10-02 13:59:17

默认情况下,Windows仅为您本地时区添加时区信息,这可能是问题的原因。

该课程仅适用于本地时区和任何预定义的时区。如果您希望将其用于其他时区,则必须将注册表设置添加到机器中以获取所需的所有时区或使用CreateCustomTimeZone创建自定义时区信息。

http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx?ppud=4 http://msdn.microsoft.com/en-us/library/bb384268.aspx

+0

默认ID列表: http://msdn.microsoft.com/en-us/library/bb397767.aspx – eschneider 2009-08-03 18:31:31