我想解析以下日期时间字符串"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"))
任何评论
答案 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'
。