在尝试将本地时间从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.
有人能告诉我为什么会发生这种情况以及如何纠正吗?
运行此程序的机器的本地时钟设置为匹配UTC。
这在服务器和*nix工作站上非常常见,包括OS X。
您看到的是UTC值的输出。
更改
Console.WriteLine(t);
至
Console.WriteLine(t.ToLocalTime());
当然,这只会在第二种情况下产生影响。您已经在第一个实例中调用了ToLocalTime()
。