现在是夏令时(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/

10-09 13:34