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