2013-04-30 76 views
0

我们使用TimeZoneInfo.ConvertTimeFromUtc将UTC时间转换为本地时间等值。转换为时区“中美洲标准时间”时,结果似乎不考虑夏令时。TimeZoneInfo.ConvertTimeFromUtc不考虑DST

根据这一页http://www.timeanddate.com/worldclock/city.html?n=24和我的客户他们有夏令时奥斯汀,德克萨斯州

我的测试代码:

 DateTime result; 
     DateTime utcTime = Convert.ToDateTime("20.04.2013 11:32:00"); 
     try 
     { 
      TimeZoneInfo sourceTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time"); 
      result = TimeZoneInfo.ConvertTimeFromUtc(utcTime, sourceTimeZone); 
     } 
     catch (Exception) 
     { 
      result = Convert.ToDateTime("01.01.1900 00:00:00"); 
     } 
     Console.WriteLine(); 
     Console.WriteLine(Convert.ToString(result)); 

它给了2013年4月20日5点32分00秒,而不是20.04。 2013 06:32:00(-5小时抵消dst)。 我的使用方法错了吗?框架中的错误?在Windows中配置错误?

感谢和问候

马克

回答

4

“中美洲标准时间”是不是你认为它是时区。这不是德克萨斯州奥斯汀的那个 - 这是中美洲(危地马拉等)的。如果您查看Guatemala time zone(与之前引用的站点相同),您会发现它始终是UTC-6,没有夏令时。

请参阅this file(取自CLDR)的示例映射。你想要“中央标准时间”,我完全期望做正确的事情。

作为一个快速插件,如果您想使用.NET中的IANA time zone database,则可以考虑使用我的Noda Time库。

+0

非常感谢您的快速回复。 – mweber 2013-04-30 15:34:15