具有格式数组的DateTime.TryParseExact()始终返回false

时间:2019-01-15 15:44:56

标签: c# .net 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);

传入数据“ dataItem”是string。传入的文本如下所示:

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

我想念什么?为什么无论日期如何,它总是返回“ false”?我尝试将字符串转换为大写字母,但没有任何改变。

1 个答案:

答案 0 :(得分:5)

问题是YYYY大写。您要查找的正确年份符号是yyyy

string[] Formats = new string[] { "dd MMM yyyy HH:mm:ss:fff", "yyyy-MM-dd hh:mm:ss:fff" };应该可以工作。