我们现在处于夏令时 (UTC+01:00),但无论我身在何处,我都需要冬令时。
例如现在时间是08:05,冬天时间是07:05
我可以通过这个函数判断是否节省时间
DateTime.Now.IsDaylightSavingTime()
这是增量(1 小时变化)
TimeZoneInfo.Local.GetAdjustmentRules()[0].DaylightDelta;
所以如果我这样做是正确的吗?
var winterTime= DateTime.Now;
if (DateTime.Now.IsDaylightSavingTime())
{
winterTime = DateTime.Now.AddHours(-1 * delta.Hours);
}
或者有其他方法吗? (不使用任何第三种解决方案)
编辑:我问这个问题的原因是我们正在将固件刷新到 nfc 设备,并且设备中的某些日期应该是冬季。这就是为什么我们的工具应该将冬季时间作为参数写入设备。
最佳答案
如果 DaylightDelta
不是整小时,最好直接使用 TimeSpan。您还需要在 GetAdjustmentRules()
中找到与当前日期匹配的规则。 GetAdjustmentRules()
返回 future 和历史规则。
var now = DateTime.Today;
var rule = TimeZoneInfo.Local.GetAdjustmentRules().Where(x => now >= x.DateStart && now <= x.DateEnd).First();
winterTime = DateTime.Now - rule.DaylightDelta;
关于c# - 在 C# 中获取冬季时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55964178/