2011年11月6日凌晨2点(美国东部时间,例如纽约),根据daylight saving time schedule,凌晨3点。使用TimeZoneInfo.ConvertTime时错误的夏令时日期?
是否有人知道为什么从.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"
看来,如果上月4日,这使得它发生在没有意义的发生的时间变化6。
编辑:哇,这一个对我来说。我在代码中使用了2012而不是2011。
您的代码将是一个*很多*容易,如果我们没有滚动阅读(以及有一个名为“区域”的变量,而不是在每次调用中调用FindSystemTimeZoneById也会有所帮助......) –
对不起,让我解决这个问题。 –