中央标准时间减去一小时

Bob*_*orn 4 c# datetime

我有一个问题,我的时间已经过了一个小时.我正在尝试创建一个具有CT时区的时间.这样做,我有这行代码:

var zone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
Run Code Online (Sandbox Code Playgroud)

它显示了这个:

{(UTC-06:00)中部时间(美国和加拿大)}

为什么?现在是2018年7月12日,CT是UTC-05.那么为什么我的调试信息显示UTC-06?在VS调试器中,对象也有:

SupportsDaylightSavingTime = true

如果重要的话,我现在在ET,现在是UTC-04.

lai*_*ika 5

6小时的偏差来自TimeZoneInfo.BaseUtcOffset属性,这是UTC与时区的标准时间之间的差异,而不是实际时间.

使用TimeZoneInfo.GetUtcOffset以获得实际偏移

var zone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
var baseOffset = zone.BaseUtcOffset; // UTC-06:00
var actualOffset = zone.GetUtcOffset(DateTime.UtcNow); // UTC-05:00
Run Code Online (Sandbox Code Playgroud)