使用DST从UTC转换为美国山区时间

时间:2012-10-31 20:27:45

标签: c# timezone

我一直在寻找如何将UTC转换为山区时间,并且我已成功找到以下每个人都说考虑了DST的功能。每当它从UTC转换为Mountain时,偏移总是-7(当前它应该是-6)。除了它似乎没有。任何人都可以为我照亮这一点,或者让它考虑到夏令时吗?

DateTime utcTime = new DateTime(createdDate.Ticks, DateTimeKind.Utc);
DateTime mountainTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcTime, "US Mountain Standard Time");

谢谢, DMAN

2 个答案:

答案 0 :(得分:13)

看起来.NET中有两个区域(至少在我的Windows 8安装中)是山区时间。

您使用的是“美国山地标准时间”,并且没有观察到DST(它适用于亚利桑那州) - 以及 观察夏令时的简单“山地标准时间”。所以你只需要摆脱“美国”部分就可以了:

using System;

class Test
{
    static void Main()
    {
        DateTime octoberUtc = new DateTime(2012, 10, 1, 0, 0, 0, DateTimeKind.Utc);
        DateTime decemberUtc = new DateTime(2012, 12, 1, 0, 0, 0, DateTimeKind.Utc);
        ConvertToMountainTime(octoberUtc);
        ConvertToMountainTime(decemberUtc);
    }

    static void ConvertToMountainTime(DateTime utc)
    {
        DateTime mountain = TimeZoneInfo.ConvertTimeBySystemTimeZoneId
            (utc, "Mountain Standard Time");

        Console.WriteLine("{0} (UTC) = {1} Mountain time", utc, mountain);
    }
}

输出(英国文化):

01/10/2012 00:00:00 (UTC) = 30/09/2012 18:00:00 Mountain time
01/12/2012 00:00:00 (UTC) = 30/11/2012 17:00:00 Mountain time

答案 1 :(得分:1)

山地标准时间仍为-7。与普遍看法相反,我们不会改变时间,但我们的时间区域。我们当前的时区实际上是Mountain Daylight Time。弄清楚时区信息是......令人不快的