0

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

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

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

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

4

1 回答 1

0
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 文档

于 2013-10-09T21:43:24.753 回答