[英]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.