我只是想确定给定日期是否属于夏令时。 2017年11月5日凌晨2点应该是触发器。
我原本预计凌晨1点是真的,而凌晨2点对DST来说是假的
这是我的代码
var dateTime = new DateTime(2017,11,5,0,0,0);
var targetTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
if (targetTimeZone.IsDaylightSavingTime(dateTime)) {
Console.WriteLine("Daylight Saving Time");
}
答案 0 :(得分:1)
来自the documentation(在备注部分):
如果
dateTime
参数指定当前对象时区中的模糊时间,TimeZoneInfo.IsDaylightSavingTime
方法将dateTime
解释为标准时间,如果Kind
属性为DateTimeKind.Local
,则返回falseDateTimeKind.Unspecified
或DateTimeKind.Utc
。如果Kind属性为IsAmbiguousTime
,则此方法将选择正确的模糊时间并指示它是否为夏令时。
然后继续解释IsDaylightSavingTime
,以及一个展示如何使用它们的长示例,它与您描述的场景非常匹配。
另请注意,接受DateTimeOffset
参数的{{1}}的重载没有此问题,因为当存在偏移时值不能模糊 - 类似于Kind为UTC时。