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

本文关键字:7个 小时 DateTime 为什么 | 更新日期: 2023-09-27 17:57:28

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

例如:

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. 

有人能告诉我为什么会发生这种情况以及如何纠正吗?

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

运行此程序的机器的本地时钟设置为匹配UTC。

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

您看到的是UTC值的输出。

更改

Console.WriteLine(t);

Console.WriteLine(t.ToLocalTime());

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