我有一个有关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 ...) 以及如何防止这种情况?
答案 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,而是仅将其复制到输出中。