【发布时间】:2015-03-20 22:10:32
【问题描述】:
2017 年 DST 在巴西于 10 月 15 日 00:00:00(午夜)开始 - details
当我在 Windows 中更改为巴西时区并将日期更改为 2017 年 10 月 15 日之前的几天时,我看到系统正确显示 DST 开始日期(显示 DST 将于 10 月 15 日开始的信息)。
问题是,当我尝试从代码中获取 DST 开始日期时,它会返回 10 月 22 日。我使用 c++ mktime 和 c# TimeZone.GetDaylightChanges 都试过了。
这里是c#代码:
Console.WriteLine(TimeZone.CurrentTimeZone.GetDaylightChanges(2017).Start.ToString());
结果是:
10/21/2017 11:59:59 PM
知道为什么吗?
【问题讨论】:
-
TimeZone可能不适合使用。请参阅GetDaylightChanges中给调用者的说明:由于 TimeZone 类仅支持一个夏令时调整规则,因此 GetDaylightChanges 方法将当前调整规则应用于任何一年,而不管调整规则是否实际适用于该年份。当您使用TimeZoneInfo时会发生什么? -
TimeZoneInfo 工作正常。谢谢。