C# DateTime 解析不一致

C# DateTime Parse inconsistency

我有一个关于 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 ...) 我该如何防止这种情况?

我猜你所在的时区是 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 time = UTC+0),但是你电脑的时区自动加了2小时。

--

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