提问人:Felix Arnold 提问时间:7/18/2018 更新时间:7/18/2018 访问量:176
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...) 我该如何防止这种情况发生?
答:
2赞
Neil
7/18/2018
#1
我的猜测是你处于 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 小时。
--
为了完全正确,您应该使用 .你混淆了问题,因为你包含一个尾随的 Z,它不是由格式化程序添加的,而只是复制到输出中。time.ToString("o");
ToString
评论
.ToUniversalTime()
ToString
DateTimeStyles.AdjustToUniversal
ParseExact()
DateTimeStyles.RoundTripKind
Z
DateTimeKind.Utc