ToLocalTime在时区之间工作吗?

时间:2010-09-16 21:42:11

标签: c# datetime

documentation说......

  • 您可以使用ToLocalTime方法还原由ToUniversalTime或FromFileTimeUtc方法转换为UTC的本地日期和时间值。

继续说(立即)

  • 但是,如果原始时间代表本地时区的无效时间,则与恢复的值不匹配。

后者是否暗示只有时间'无效'才会起作用(无论这意味着什么?)?

1 个答案:

答案 0 :(得分:1)

我认为这证明了无效时间意味着什么:

DateTime now = DateTime.Now;
for (DateTime dt = now; dt < now.AddYears(1); dt += TimeSpan.FromMinutes(30))
{
    DateTime dt2 = dt.ToUniversalTime().ToLocalTime(); // dt2 == dt ?
    if (dt2 != dt)
    {
        Console.WriteLine("Not equal: {0}, {1}", dt, dt2);
    }
}

我的计算机上的结果(您可能得到不同的结果):

Not equal: 27-03-2011 02:26:28, 27-03-2011 03:26:28
Not equal: 27-03-2011 02:56:28, 27-03-2011 03:56:28

时间“27-03-2011 02:26:28”无效,因为它们因时钟向前移动一小时而不存在,导致跳过该时间。