我们使用TimeZoneInfo。ConvertTimeFromUtc将UTC时间转换为本地等效时间。当转换到时区"中美洲标准时间"时,结果似乎不考虑夏令时。
根据这个页面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) );
它给出20.04.2013 05:32:00而不是20.04.2013 06:32:00(夏令时-5小时偏移)。我的方法用错了吗?框架中的bug ?windows配置错误?
Thanks and regards
Marc"中美洲标准时间"并不是你想象中的时区。这不是德克萨斯州的奥斯汀,而是中美洲(危地马拉等)。如果你看一下危地马拉的时区(从你之前引用的同一个网站),你会发现它总是UTC-6,没有夏令时。
请参阅此文件(取自CLDR)以获取示例映射。你想要"中央标准时间",我完全希望它能做正确的事情。
作为一个快速插件,如果你想使用。net的IANA时区数据库,你可能要考虑使用我的Noda时间库。