DateTime.ParseExact字符串格式不断抛出错误

Coo*_*ame 3 .net datetime

我有一个DateTime的字符串表示,如下所示:

2011-05-25T16:42:17.156Z
Run Code Online (Sandbox Code Playgroud)

我没试过就试过以下内容:

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);
Run Code Online (Sandbox Code Playgroud)

所有这些都给出了错误:

String was not recognized as a valid DateTime.
Run Code Online (Sandbox Code Playgroud)

标准DateTime.Parse似乎可行,但出于性能原因,我们正在探索ParseExact.这似乎应该是非常直接的,但似乎无法让它工作.

Jon*_*eet 6

使用HH代替hh 24小时格式.这应该工作:

DateTime.ParseExact(formatted, "yyyy-MM-ddTHH:mm:ss.fffZ",
                    CultureInfo.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)

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

  • @ user90070:无论当前的文化如何,使用不变文化都会得到相同的结果.日期格式中的某些分隔符依赖于文化,因此它可能不适用于所有文化.另一种方法是在分隔符周围使用撇号使格式字符串文化独立; ` "YYYY ' - ' MM ' - ' dd'T'HH ':' 毫米 ':' SS FFFZ.'"`. (2认同)