我目前处于UTC + 1区域。 TimeZoneInfo.Local.BaseUtcOffset返回+1。
new DateTimeOffset(DateTime.Today).AddDays(4).Offset
会返回+1。
但是new DateTimeOffset(DateTime.Today.AddDays(4)).Offset
会返回+2!
更有趣的是,直到加上四天的偏移是相同的。从四天开始,呼叫new DateTimeOffset(DateTime.Today.AddDays(x)).Offset
返回+2偏移量。
为什么呢?
//Same offset +1
var offset2 = new DateTimeOffset(DateTime.Today).AddDays(7).Offset;
var offset22 = new DateTimeOffset(DateTime.Today.AddDays(7)).Offset;
//Same offset +1
var offset3 = new DateTimeOffset(DateTime.Today).AddDays(3).Offset;
var offset32 = new DateTimeOffset(DateTime.Today.AddDays(3)).Offset;
//Different offset +1 and +2
var offset4 = new DateTimeOffset(DateTime.Today).AddDays(4).Offset;
var offset42 = new DateTimeOffset(DateTime.Today.AddDays(4)).Offset;
//Different offset +1 and +2
var offset5 = new DateTimeOffset(DateTime.Today).AddDays(5).Offset;
var offset52 = new DateTimeOffset(DateTime.Today.AddDays(5)).Offset;
答案 0 :(得分:5)
比我的评论更严肃的答案......
来自MSDN:
由于DateTimeOffset对象不表示特定时区中的日期和时间,因此AddDays方法在执行日期和时间算术时不考虑特定时区的调整规则。
因此
DateTimeOffset(DateTime.Today).AddDays(5)
不会更改原始日期的时区(今天= CET = UTC + 1)
另外
DateTime.Today.AddDays(5)
在5天内给出当地时间(CEST = UTC + 2)。
所以
DateTimeOffset(DateTime.Today.AddDays(5))
将给出CEST偏移量(UTC + 2)
的时间