2013-04-30 70 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