0

我有一个关于 DateTime 的问题我的代码是:

DateTime.ParseExact("2018-06-13T12:05:55.7738391Z", "yyyy-MM-ddTHH:mm:ss.fffffffZ", System.Globalization.CultureInfo.InvariantCulture).ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ")

结果是:

"2018-06-13T14:05:55.7738391Z"

为什么 DateTime 会增加 2 小时?(我试过 ...00:05:55...)我该如何防止这种情况发生?

4

1 回答 1

2

我的猜测是你在 UTC+2 的时区。

var time = DateTime.ParseExact("2018-06-13T12:05:55.7738391Z", "yyyy-MM-ddTHH:mm:ss.fffffffZ", System.Globalization.CultureInfo.InvariantCulture);

Console.WriteLine(time.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ"); // + 2 hours ?   
Console.WriteLine(time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ"); // +0 hours ?

您说过时间是 UTC(Z = zulu 时间 = UTC+0),但是您计算机的时区会自动增加 2 小时。

--

为了完全正确,您应该使用time.ToString("o");. 你很困惑,因为你ToString包含一个尾随 Z,它不是由格式化程序添加,而是复制到输出中。

于 2018-07-18T10:08:52.150 回答