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

时间:2015-11-10 17:55:27

标签: c# asp.net

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

2 个答案:

答案 0 :(得分:0)

我得到了解决方案:

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,其他方式为空。

所以时间跨度是时间和时间。要附加到所需日期时间值的分钟数。

答案 1 :(得分:0)

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

    TimeZoneInfo.Local.GetUtcOffset(DateTimeOffset.Now)

牢记以下“注意事项”:

<块引用>

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

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