繁体   English   中英

如果适用,如何获取夏令时的偏移量

[英]How to get the offset of daylight saving time if applicable

我在位于夏令时更改适用的区域的服务器中启动了一个站点。 我将某些日期作为本地时间存储在数据库中。 当我将这些日期拉回到 Fullcalendar (jQuery) 中时,它会自动将时间更改为浏览器的时区。 我在服务器端有逻辑可以在日历中正确显示日期。 但是,当夏令时更改适用时,日历中的时间会显示一个小时的差异。 我想要代码中这种保存的偏移量,以便我可以放置一些逻辑来忽略或覆盖这种时间。

我得到了解决方案:

var returnDate = System.DateTime.Now.ToUniversalTime();
var tRules = TimeZoneInfo.Local.GetAdjustmentRules().ToList();
var rule = tRules.OrderBy(x => x.DateEnd).FirstOrDefault();
var timeSpan = rule.DaylightDelta;
if (timeSpan != null)
{
    returnDate = returnDate + timeSpan;
}

如果在日期时间设置中允许夏令时更改,则将返回AdjustmentRules,否则为空。

因此,时间跨度是要附加到所需日期时间值的小时和分钟。

就日光增量而言,您可能希望将其与此进行对比:

    TimeZoneInfo.Local.GetUtcOffset(DateTimeOffset.Now)

请记住以下“注意事项”:

GetUtcOffset 方法仅识别本地时区的当前夏令时调整规则。 因此,只有在最新的调整规则生效期间,才能保证准确返回本地时间的UTC偏移量。 如果时间是受先前调整规则约束的历史日期和时间值,则它可能返回不准确的结果。

https://docs.microsoft.com/en-us/dotnet/api/system.timezone.getutcoffset?view=net-5.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM