c# - 在 C# 中获取冬季时间

标签 c# datetime

我们现在处于夏令时 (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/

相关文章:

c# - Microsoft.mshtml.dll 重新分发问题

c# - 即使鼠标不移动也会触发 Picturebox mousemove 事件

C# 正则表达式模式删除列表中的所有内容

c# - 传递 IOC 容器的替代方案

java - OffsetDateTime 到毫秒

MySQL错误: Incorrect datetime value: '01/27/1989' for function str_to_date

c# - MySqlBulkUploader 将 Null 值从 CSV 插入到 MySql c#

javascript - 从给定日期时间更新日期时间

java - java.time 是否为 "yyyy-MM-dd"、 "HH:mm:ss"或类似变体等模式带来默认的 DateTimeFormatters ?

javascript - 将 jwt.iat(发布于)属性与当前日期时间进行比较时遇到问题 - ("Seconds Since the Epoch"NumericDate)