【发布时间】:2012-08-29 09:15:23
【问题描述】:
2011 年 11 月 6 日凌晨 2 点(美国东部标准时间,例如在纽约),根据daylight saving time schedule,现在是凌晨 3 点。
有人知道为什么 .NET 框架中的 TimeZoneInfo.ConvertTime 函数会返回以下内容:
var tzi = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var f = "yyyy/MM/dd HH:mm:ss";
TimeZoneInfo.ConvertTime(new DateTimeOffset(2012, 11, 3, 11, 0, 0, TimeSpan.Zero), tzi).ToString(f);
"2012/11/03 07:00:00"
TimeZoneInfo.ConvertTime(new DateTimeOffset(2012, 11, 4, 11, 0, 0, TimeSpan.Zero), tzi).ToString(f);
"2012/11/04 06:00:00"
TimeZoneInfo.ConvertTime(new DateTimeOffset(2012, 11, 6, 11, 0, 0, TimeSpan.Zero), tzi).ToString(f);
"2012/11/06 06:00:00"
TimeZoneInfo.ConvertTime(new DateTimeOffset(2012, 11, 7, 11, 0, 0, TimeSpan.Zero), tzi).ToString(f);
"2012/11/07 06:00:00"
好像时间变化发生在 11 月 4 日,这没有任何意义,因为它发生在 6 日。
编辑:哇,这个是我的。我在代码中使用了 2012 而不是 2011。
【问题讨论】:
-
如果我们不必滚动查看代码,您的代码将会很多更容易阅读......(并且有一个名为“zone”的变量而不是比在每次通话中调用 FindSystemTimeZoneById 也会有所帮助...)