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

本文关键字:时间 客户端 获取 GMT 偏移量 | 更新日期: 2023-09-27 18:34:35

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

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

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

上面的代码片段有效,但不考虑夏令时。关于如何将夏令时考虑在计算中有什么想法吗?

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

int timeOffsetGMT = -5;
DateTime localTime = DateTime.UtcNow.AddHours(timeOffsetGMT);
if(TimeZoneInfo.Local.IsDaylightSavingTime(localTime))
    localTime = localTime.AddHours(1);

若要直接设置TimeZoneInfo,如果您的服务器不驻留在"东部标准时间"区域 (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);

MSDN 文档