带有Format数组的DateTime.TryParseExact()始终返回false

CDo*_*ove -1 .net c# datetime parsing

在深入挖掘SO之后,我仍然没有看到这里发生的事情.

 string[] Formats = new string[] { "dd MMM YYYY HH:mm:ss:fff", "YYYY-MM-dd hh:mm:ss:fff" };
                    DateTime t = new DateTime();

                    if (DateTime.TryParseExact(
                        dataItem.Trim(), 
                        Formats ,                         
                        System.Globalization.DateTimeFormatInfo.InvariantInfo,
                        System.Globalization.DateTimeStyles.None, 
                        out t)
                        == false)
                        return false;
                        else
                        return DoOtherStuff(dataItem);
Run Code Online (Sandbox Code Playgroud)

传入的数据" dataItem"是一个string.传入的文本如下所示:

2016年1月2日13:15:49:447

我错过了什么?无论日期如何,为什么这总是返回"假"?我已经尝试将字符串转换为大写,但没有改变.

小智 5

问题在于YYYY资本化.您正在寻找的正确的年份符号是yyyy.

string[] Formats = new string[] { "dd MMM yyyy HH:mm:ss:fff", "yyyy-MM-dd hh:mm:ss:fff" }; 应该管用.