DateTime.ParseExact函数未按预期工作?

时间:2016-06-03 10:53:32

标签: c# datetime

我想解析以下日期时间字符串"2016-05-31T16:03:39.5173279Z"并且接收结果不是我所期望的,我希望那小时是16而不是18。

这是一段代码:

string _UtcFormat= "yyyy-MM-ddTHH:mm:ss.fffffffZ";
DateTime.ParseExact("2016-05-31T16:03:39.5173279Z", _UtcFormat, new System.Globalization.CultureInfo("de-DE"))

任何评论

enter image description here

3 个答案:

答案 0 :(得分:4)

你可能没有注意到的一点是

Kind: Local

默认情况下,ParseExact会解析日期时间并将其转换为您当地的时区。

如果你想忽略它,请使用overload which allows you to specify DateTimeStyles - 我相信你想要的设置是DateTimeStyles.AdjustToUniversal

答案 1 :(得分:4)

您需要添加DateTimeStyles.AdjustToUniversal作为DateTime.ParseExact()的最后一个参数:

DateTime dt = DateTime.ParseExact("2016-05-31T16:03:39.5173279Z", _UtcFormat, new System.Globalization.CultureInfo("de-DE"), DateTimeStyles.AdjustToUniversal);

答案 2 :(得分:0)

引用Z,如:

string _UtcFormat = "yyyy-MM-ddTHH:mm:ss.fffffff'Z'";

2016年5月31日16:03 UTC,德国时间是18:03(他们的夏季是UTC + 2)。

在日期和时间格式字符串中,符号Z具有特殊含义。如果您只想将其视为没有功能的字符,请在格式字符串中将其引用为'Z'