Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取夏令时的偏移量(如果适用)_C#_Asp.net - Fatal编程技术网

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

C# 如何获取夏令时的偏移量(如果适用),c#,asp.net,C#,Asp.net,我在一个服务器上启动了一个站点,该服务器位于夏令时更改适用的区域。我将某些日期存储为数据库中的本地时间。当我将这些日期拉回到Fullcalendar(jQuery)中绘图时,它会自动将时间更改为浏览器的时区。我在服务器端有逻辑,可以在日历中正确显示日期。但是,当夏时制更改适用时,日历中的时间会显示一小时的差异。 我希望在代码中得到这种节省的偏移量,这样我就可以使用一些逻辑来忽略或覆盖这种时间。我得到了解决方案: var returnDate = System.DateTime.Now.ToUni

我在一个服务器上启动了一个站点,该服务器位于夏令时更改适用的区域。我将某些日期存储为数据库中的本地时间。当我将这些日期拉回到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;
}
如果datetime设置中允许日光节约更改,则将返回AdjustmentRules,否则为空


因此,timespan是附加到所需datetime值的小时和分钟。

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

    TimeZoneInfo.Local.GetUtcOffset(DateTimeOffset.Now)
请记住以下“注意事项”:

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


最好在数据库中以UTC格式保存日期。