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



我在一个服务器中启动了一个站点,该服务器位于夏令时更改适用的区域。我将某些日期作为本地时间存储在数据库中。当我将这些日期拉回到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://learn.microsoft.com/en-us/dotnet/api/system.timezone.getutcoffset?view=net-5.0

相关内容

最新更新