将 UTC 时间融合到特定时区时出现问题

本文关键字:问题 定时区 UTC 时间 融合 | 更新日期: 2023-09-27 18:31:57

我有一个时间跨度值 1:00:00

我将其转换为UTC日期时间

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

然后将此 UTC 日期时间隐藏到 (UTC-05:00) 东部时间(美国和加拿大)

TimeZoneInfo.ConvertTimeFromUtc(dateTime, timeZoneInfo);

但它返回我的日期时间,小时数为"21",我预计它应该是"20"

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

知道我在这里做错了什么吗?

将 UTC 时间融合到特定时区时出现问题

由于该时区目前采用夏令时 (DateTime.UtcNow),因此与一小时不同。

如果您只关心服务器时间

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