c# - GetUtcOffset 返回某些年份/日期的错误偏移量

标签 c# datetime timezone-offset defaultmodelbinder

 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/

相关文章:

c - 使用 time.h,我可以根据 .ics 文件中的时间构造日期和时间字符串吗?

javascript - 为什么这个网页使用Javascript来显示文章的日期?

python - 从朴素的本地日光时间转换为 Pandas 的朴素本地标准时间

java - 将 ZoneId 应用于 Java 中的 Date 对象

javascript - iso '' 0001-01-01T01 :00:00' adding 16 second 创建日期

c# - 无法从 DragEventArgs 获取数据。 getData() 返回空值

c# - 带有数据源的 Asp 日历重复标签

python - Pandas 数据框日期时间到时间然后到秒

c# - C# Endian 敏感吗?

c# - 为什么我的 CurrentCulture en-GB 而我的 CurrentUICulture en-US