【发布时间】:2016-08-15 13:05:15
【问题描述】:
我试图了解为什么我的日期是错误的:
DateTime databaseUtcTime = new DateTime(2016, 8, 15, 10, 20, 0, DateTimeKind.Utc);
var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Europe Standard Time");
var testDateTime = TimeZoneInfo.ConvertTimeFromUtc(databaseUtcTime, timeZone);
testDateTime 输出 15/08/2016 12:20:00 而不是 15/08/2016 11:20:00
这是为什么呢?不应该比 UTC 提前 1 小时,而不是 2 小时吗?
编辑----
感谢乔恩·斯基特,
如果这对任何人有帮助,我会使用:
if(testDateTime.IsDaylightSavingTime())
{
testDateTime = testDateTime.AddHours(-1);
}
尽管您不知道上下文,但这可能有助于了解如何在按时运行某些显式测试时摆脱夏令时。
【问题讨论】:
-
是时候变成NodaTime了。 (这是一个很好的标语):github.com/nodatime/nodatime