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://docs.microsoft.com/en-us/dotnet/api/system.timezone.getdaylightchanges?view=netframework-4.8#remarks
就像我在1972或1973年所说的那样,开始是在7天前结束的。
我该如何解决?
答案 0 :(得分:1)
我们无法使GetUtcOffset与历史日期一起使用。相反,我们使用了Noda Time,它应该像这样简单:
var dt = Instant.FromUtc(1972, 03, 19, 02, 00, 00);
DateTimeZone zone = DateTimeZoneProviders.Tzdb["Europe/London"];
Offset offset = zone.GetUtcOffset(dt);