小编NKe*_*die的帖子

TimeZoneInfo.Local与TimeZoneInfo.FindSystemTimeZoneById

我一直在使用DateTimeTimeZoneInfo类,我用以下代码遇到了一个有趣的结果:

var dstStart = new DateTime(2013, 3, 10, 2, 0, 0, DateTimeKind.Local);
var result = TimeZoneInfo.Local.IsDaylightSavingTime(dstStart);
Run Code Online (Sandbox Code Playgroud)

结果是False.我实际上会想到它True(DST从3月10日凌晨2点开始)

然后我尝试使用相似的代码FindSystemTimeZoneById:

var myTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var result = myTimeZone.IsDaylightSavingTime(dstStart);
Run Code Online (Sandbox Code Playgroud)

结果令人惊讶True.

然后我检查了这些对象是否都代表相同的时区:

myTimeZone.Id == TimeZoneInfo.Local.Id // returns True (Both are "Eastern Standard Time")
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么这些结果不同,更重要的是我如何才能使它们相同?

我的电脑肯定在Eastern Standard Time时区

更多信息:

我重新计算了我的计算机时钟,并运行了一些测试来比较上述TimeZoneInfo每种方法返回的对象.这是我的测试程序

var timeZoneFromLookup = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");

var dstStart = new DateTime(2013, 3, 10, 2, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net

11
推荐指数
2
解决办法
7625
查看次数

标签 统计

asp.net ×1

c# ×1