【发布时间】:2021-02-09 16:19:09
【问题描述】:
我正在尝试像这样获取 EST 时区的特定时间的偏移小时数
var est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
est.GetUtcOffset(new DateTime(2020, 3, 9)).Hours;
这工作正常并返回我-4,这适用于9th March 2020,因为8th March 2020 02:00:00 上的夏令时更改,但是当我尝试为日期8th March 2020 02:00:00 运行相同的代码时,它返回我@987654326 @,虽然我的理解是从 3 月 8 日凌晨 2 点开始它应该开始返回我 -4。
要获得 -4,我必须将它运行到凌晨 3 点,即日光变化后一小时。
但是为什么会这样呢?为什么我必须增加一小时才能使日光更改生效?
【问题讨论】:
-
因为更改使时钟从凌晨 2 点跳到凌晨 3 点。
-
@juharr - 啊!所以它跳过了日光变化之间的时差!从来不知道这个。所以基本上应该跳过添加/减去白天时间的任何时间以获得正确的偏移量?
-
是的,基本上凌晨 2 点到凌晨 3 点发生变化时并不存在,因此如果您询问这些时间,它只会给出 -5 偏移量。当它从 -4 变回 -5 时更糟,因为同一小时出现了两次。
-
知道了!感谢您提供这些有用的信息。您知道任何时区的日光时间是否可以超过一小时?
-
我不知道它在任何地方都超过一个小时,但我认为有些地方会改变半小时,而时区内的一些地方根本不会改变。