将以下字符串转换为c#代码中的DateTime。
string dateTime = "2017-03-29T17:51:44.8389637Z";
DateTime dt1 = Convert.ToDateTime(dateTime);
以上代码将其转换为:3/29/2017 10:51:44 AM 转换后我失去了大约7个小时,我怎样才能得到结果:2017-03-29 17:51:44。我认为这与文化有关..?
请帮忙。
答案 0 :(得分:1)
我建议使用DateTime.Parse来提供更强大的转换:
DateTime dt1 = DateTime.Parse("2017-03-29T17:51:44.8389637Z", CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal);
答案 1 :(得分:1)
发生这种情况的原因是您有一个以Z
结尾的日期/时间字符串。这表示它处于UTC时间。当您转换为DateTime时,它会将其转换为您当地文化的时间,因此您的正好七小时,因为您的时区比UTC晚七个小时。
如果时间是UTC,请在没有空格的时间后直接添加Z. Z是零UTC偏移的区域指示符。因此,“09:30 UTC”表示为“09:30Z”或“0930Z”。 “14:45:15 UTC”将是“14:45:15Z”或“144515Z”。
因此,您的2017-03-29 17:51:44
字符串和3/29/2017 10:51:44 AM
在不同的时区完全相同。
编辑:正如其他人所说,只需使用DateTime.Parse
来指定您希望如何创建DateTime。