var currentServerOffset = TimeZone.CurrentTimeZone.GetUtcOffset(new DateTime(1972, 03, 19, 02, 00, 00);
使用上面的方法会返回错误的偏移量,但是当您经过 3 月 26 日时,它会被纠正。
这似乎已经关闭了一整周,在我的测试中,这是在 1972 年和 1973 年引用:https://greenwichmeantime.com/info/calendars/bst-dates/
我认为这可能与这些年来 GetDaylightChanges 错误有关引用:https://learn.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);
关于c# - GetUtcOffset 返回某些年份/日期的错误偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56950519/