使用夏令时将CST转换为EST

时间:2015-04-02 15:20:36

标签: c# timezone-offset

我正在尝试将CS​​T中的DateTime转换为EST,同时调整夏令时。我的本地机器在EST上。 在msdn上找到了this,但用户fokasu 建议使用DateTimeOffset来调整DST,但我不知道如何将其合并到我的代码中。谢谢你的帮助。 这是我到目前为止有效的方法,但我认为它不适合夏令时。

        DateTime cstTime, utcTime;
        DateTime estTime;
        string cstZoneId, estZoneId;
        TimeZoneInfo cstZone, estZone;

        estZoneId = "Eastern Standard Time";
        cstZoneId = "Central Standard Time";
        estZone = TimeZoneInfo.FindSystemTimeZoneById(estZoneId);
        cstZone = TimeZoneInfo.FindSystemTimeZoneById(cstZoneId);

        //define d as CST
        cstTime = d;
        try
        {
            //convert CST to UTC
            utcTime = TimeZoneInfo.ConvertTimeToUtc(cstTime, cstZone);
            //convert UTC to EST
            estTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, estZone);
            return estTime;
        }
        catch (Exception e)
        {

            Console.WriteLine(e.Message);
        }

1 个答案:

答案 0 :(得分:0)

从你的问题不清楚问题是什么;你没有描述你的代码产生的结果,也没有描述你期望的结果。

除了每年两个时段,每个时段一个小时,中部和东部时间总是相隔一个小时。例外情况是夏令时过渡和退出。在美国东部时间凌晨2点,即3月的第二个星期日,东部时区的时钟将移至美国东部时间凌晨3点。在接下来的60分钟内,东部时间比中部时间早两个小时。然后,在CST凌晨2点,中央时区的时钟移动到凌晨3点CDT,差异返回到1小时。

同样,在11月的第一个星期日,美国东部时间凌晨2点,时钟设置为东部时间凌晨1点。在接下来的60分钟内,中心区域仍然是夏令时,所以两个地方的时间都是一样的。一小时后,中央区的时钟向后移动一小时,恢复正常的时差。

由于您的时间永远不会落入这两个时期,您可以放心地假设中部时间总是在东部时间前一小时。