我希望能够计算在夏令时转换期间四小时后的时间,无论是进入夏令时还是退出夏令时。
目前正在进行以下操作:
DateTime now = DateTime.now();
DateTime later = now.AddHours(4);
System.Console.WriteLine(now + " isDST " + now.IsDaylightSavingTime());
System.Console.WriteLine(later + " isDST " + later.IsDaylightSavingTime());
提供以下内容:
11/1/2009 12:45:54 AM isDST True
11/1/2009 4:45:54 AM isDST False
我希望看到的是:
11/1/2009 12:45:54 AM isDST True
11/1/2009 3:45:54 AM isDST False
我发现最好的方法是通过UTC进行一个往返,具体做法如下:
DateTime now = DateTime.now();
DateTime later = now.ToUniversalTime().AddHours(4).ToLocalTime;
System.Console.WriteLine(now + " isDST " + now.IsDaylightSavingTime());
System.Console.WriteLine(later + " isDST " + later.IsDaylightSavingTime());
看起来我应该能够指定AddHours()返回的时间是经过的时间还是显示时间。我错过了什么吗?