将UTC时间转换为特定时区的问题

时间:2012-04-20 15:19:32

标签: c# .net

我的时间跨度值为1:00:00

我把它转换为UTC日期时间

DateTime dateTime = DateTime.UtcNow.Date.Add(timeSpan);

然后将此UTC日期时间转换为(UTC-05:00)美国东部时间(美国和加拿大)

TimeZoneInfo.ConvertTimeFromUtc(dateTime, timeZoneInfo);

但它返回DateTime,小时为“21”,我希望它应该是“20”

因为(UTC-05:00)东部时间(美国和加拿大)应该是凌晨1:00:00 - 5 = 20:00:00

知道我在这里做错了吗?

2 个答案:

答案 0 :(得分:0)

由于该时区目前处于夏令时,目前(DateTime.UtcNow),它是一个小时不同。

答案 1 :(得分:0)

如果您只关心服务器时间

int dstOffset = 0;

if (System.TimeZone.CurrentTimeZone.IsDaylightSavingTime(DateTime.UtcNow))
   dstOffset = -1;