Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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# 从GMT偏移量获取客户端本地时间_C#_Asp.net Mvc 4_.net 4.5 - Fatal编程技术网

C# 从GMT偏移量获取客户端本地时间

C# 从GMT偏移量获取客户端本地时间,c#,asp.net-mvc-4,.net-4.5,C#,Asp.net Mvc 4,.net 4.5,在我的网站中,我需要在不依赖Javascript的情况下跟踪用户的本地日期/时间。我有一个表,其中存储了每个用户的时区偏移量(以GMT为单位)。因此,对于用户X,时区偏移可以存储为-5 为了获取用户当前的本地日期和时间,我使用以下代码 int timeOffsetGMT = -5; DateTime localTime = DateTime.UtcNow.AddHours(timeOffsetGMT); 上面的代码片段可以工作,但不考虑夏令时。有没有想过如何将夏令时计算在内 int timeO

在我的网站中,我需要在不依赖Javascript的情况下跟踪用户的本地日期/时间。我有一个表,其中存储了每个用户的时区偏移量(以GMT为单位)。因此,对于用户X,时区偏移可以存储为-5

为了获取用户当前的本地日期和时间,我使用以下代码

int timeOffsetGMT = -5;
DateTime localTime = DateTime.UtcNow.AddHours(timeOffsetGMT);
上面的代码片段可以工作,但不考虑夏令时。有没有想过如何将夏令时计算在内

int timeOffsetGMT = -5;
DateTime localTime = DateTime.UtcNow.AddHours(timeOffsetGMT);

if(TimeZoneInfo.Local.IsDaylightSavingTime(localTime))
    localTime = localTime.AddHours(1);

要直接设置时区信息,如果您的服务器不在“东部标准时区”(GMT-5),请使用以下命令:

var zone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");

int timeOffsetGMT = -5;
DateTime localTime = DateTime.UtcNow.AddHours(timeOffsetGMT);

if(zone.IsDaylightSavingTime(localTime))
    localTime = localTime.AddHours(1);


是否有方法仅根据GMT偏移量设置时区信息?简短回答,否。在给定偏移量中可以有多个“
TimeZoneInfo
s”。某些国家/地区/文化不遵守DST。您可以研究使用
TimeZoneInfo.CreateCustomTimeZone
并传入适当的参数,但您仍然需要事先知道用户的时区。