C#DateTime解析不一致

时间:2018-07-18 09:53:33

标签: c# datetime timezone datetime-format invariantculture

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

1 个答案:

答案 0 :(得分: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 =祖鲁时间= UTC + 0),但是计算机的时区会自动增加2小时。

-

要完全正确,您应该使用time.ToString("o");。事情令人困惑,因为您的ToString包含尾随Z,格式化程序未添加尾随Z,而是仅将其复制到输出中。