2011-05-25 43 views
3

我有日期时间的字符串表示,看起来像这样:DateTime.ParseExact字符串格式不断抛出错误

2011-05-25T16:42:17.156Z 

我都试过,没有任何运气如下:

DateTime.ParseExact(formatted, "yyyy-MM-ddThh:mm:ss.fffZ", CultureInfo.CurrentCulture); 
DateTime.ParseExact(formatted, "yyyy-MM-dd hh:mm:ss.fff", CultureInfo.CurrentCulture); 
DateTime.ParseExact(formatted, CultureInfo.CurrentCulture.DateTimeFormat.GetAllDateTimePatterns(), CultureInfo.CurrentCulture, DateTimeStyles.AssumeUniversal); 
DateTime.ParseExact(formatted, CultureInfo.CurrentCulture.DateTimeFormat.GetAllDateTimePatterns(), CultureInfo.CurrentCulture, DateTimeStyles.None); 

所有这些给错误:

String was not recognized as a valid DateTime. 

标准DateTime.Parse似乎工作,虽然对于性能reas我们正在探索ParseExact。这似乎应该是非常简单的,但似乎无法让它工作。

回答

6

使用HH而不是hh作为24小时格式。这应该工作:

DateTime.ParseExact(formatted, "yyyy-MM-ddTHH:mm:ss.fffZ", 
        CultureInfo.CurrentCulture); 

确定要使用当前的文化,而不是不变的文化有关系吗?

+0

+1我也遇到过这个问题:P – 2011-05-25 16:53:43

+0

我刚刚得出同样的结论,并已经测试过。用'HH'它工作正常。 – Guffa 2011-05-25 16:55:44

+0

谢谢你,这个伎俩。为什么要选择不变的文化而不是现在的文化?或相反亦然? – CoolUserName 2011-05-25 17:03:13