现在是夏令时(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()
返回将来的规则和历史规则。
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/