0

我们使用 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 (在 dst 中偏移 -5 小时)。我使用的方法有错吗?框架中的错误?windows配置错误?

谢谢并恭祝安康

马克

4

1 回答 1

5

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

有关示例映射,请参阅此文件(取自CLDR)。您想要“中央标准时间”,我完全希望这样做是正确的。

作为一个快速插件,如果您想使用 .NET 中的IANA 时区数据库,您可能需要考虑使用我的Noda Time库。

于 2013-04-30T15:10:03.297 回答