【发布时间】:2016-11-21 15:11:18
【问题描述】:
在尝试将本地时间从 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+7 的时区
-
您将本地时间视为 UTC 时间。不要这样做(或获取 UTC 时间,而不是本地时间,作为您的输入)。
-
DateTimeKind.Utc 是你的问题。获取当地时间。
-
@MarcB 你知道我是否可以简单地更改设置来纠正问题?
-
如果最后一个关闭了 7 小时,您就有问题了。检查您的时区和区域设置。如果它在服务器上运行,请检查。我只是在本地运行了相同的代码并获得了正确的本地时间。
标签: javascript c# datetime iso gmt