为什么C#解析DateTime提前7个小时?

时间:2016-07-18 21:38:14

标签: javascript c# datetime iso gmt

在尝试将我的本地时间从Javascript转换为C#时,我在S / O周围找了一些例子。虽然我已经找到了一些不同的方法,但所有这些方法都将最后时间提前7个小时,我不理解。

e.g:

var t = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(1468877118719).ToLocalTime();
Console.WriteLine(t)
7/18/2016 9:25:18 PM//<--output

var t = DateTime.Parse("2016-07-18T21:27:32.513Z");
Console.WriteLine(t);
7/18/2016 9:27:32 PM//output

此外,即使我只是尝试

var now = DateTime.Now;
Console.WriteLine(now);
7/18/2016 9:39:55 PM//the output is 7 hours ahead. 

谁能告诉我为什么会这样,以及如何纠正它?

2 个答案:

答案 0 :(得分:2)

运行此命令的计算机将其本地时钟设置为与UTC匹配。

这在服务器和* nix工作站上很常见,包括OS X.

答案 1 :(得分:1)

您所看到的是UTC值的输出。

更改

Console.WriteLine(t);

Console.WriteLine(t.ToLocalTime());

当然,这只会对第二种情况产生影响。您已在第一个实例中调用ToLocalTime()