GetUtcOffset returns 某些年份/日期的错误偏移量

GetUtcOffset returns the wrong off set for certain years / dates

 var currentServerOffset = TimeZone.CurrentTimeZone.GetUtcOffset(new DateTime(1972, 03, 19, 02, 00, 00);

使用上面的 returns 错误的偏移量,但是当你通过 3 月 26 日时它被更正了。

这似乎关闭了整整一周,在我的测试中,这是在 1972 年和 1973 年参考:https://greenwichmeantime.com/info/calendars/bst-dates/

我认为这可能与这些年 GetDaylightChanges 错误有关 ref: https://docs.microsoft.com/en-us/dotnet/api/system.timezone.getdaylightchanges?view=netframework-4.8#remarks

当我在 1972 年或 1973 年称此为过去时,开始时间为 7 天。

我该如何解决这个问题?

我们无法让 GetUtcOffset 处理历史日期。相反,我们使用了 Noda Time,它应该很简单:

var dt = Instant.FromUtc(1972, 03, 19, 02, 00, 00);
DateTimeZone zone = DateTimeZoneProviders.Tzdb["Europe/London"];
Offset offset = zone.GetUtcOffset(dt);