C# ParseExact无法识别从数据表中提取的字符串

C# ParseExact无法识别从数据表中提取的字符串,c#,datetime,datatable,C#,Datetime,Datatable,我正在编写一个集成测试,因此,我正在以数据表的形式读取一个CSV文件,然后尝试解析每行中的元素。但是,当我获取日期的字符串表示形式并将其传递到DateTime.ParseExact时,我得到错误:“字符串未被识别为有效的DateTime” 当我在这里提供的代码中使用注释掉的行,并显式地将日期定义为字符串时,ParseExact就可以正常工作了。调试集成测试时,startDateString具有正确的日期值。由于某种原因,当它被传递到ParseExact时,它会抛出一个错误 我尝试过使用一种明确的

我正在编写一个集成测试,因此,我正在以数据表的形式读取一个CSV文件,然后尝试解析每行中的元素。但是,当我获取日期的字符串表示形式并将其传递到DateTime.ParseExact时,我得到错误:“字符串未被识别为有效的DateTime

当我在这里提供的代码中使用注释掉的行,并显式地将日期定义为字符串时,ParseExact就可以正常工作了。调试集成测试时,startDateString具有正确的日期值。由于某种原因,当它被传递到ParseExact时,它会抛出一个错误

我尝试过使用一种明确的文化,例如“en-GB”和DateStyles。没有,没有太多成功。有人知道为什么DateTime.ParseExact构造函数不接受我从DataRow获取的字符串输入吗

谢谢

...
var dataTable= file.ReadFile("file.csv", 2);
            for (int i = 0; i < dataTable.Rows.Count / 2; i = i + 2) 
            {
                var startDate = new DateTime();
                var maturity= new DateTime();
                try
                {
                    var startDateString = dataTable.Rows[i]["item9"].ToString(); 
//                    var startDateString = "24/01/2008";
                    var formats = new[] { "dd/M/yyyy", "dd/MM/yyyy" };
                    startDate = DateTime.ParseExact(startDateString, formats, CultureInfo.InvariantCulture,
                                        DateTimeStyles.AssumeLocal);
                    endDate = DateTime.ParseExact(dataTable.Rows[i]["item10"].ToString(), formats, CultureInfo.InvariantCulture,
                                        DateTimeStyles.AssumeLocal); 
                }
                catch (Exception e)
                {
                    throw new FormatException(String.Format("There was an error with the format of one of the dates in the file"));  
                }
...
。。。
var dataTable=file.ReadFile(“file.csv”,2);
对于(int i=0;i
您的startDateString中有一个尾随空格。

您的startDateString中有一个尾随空格。

是否可能从“item9”列中提取的值不是日期?您是否确认从datatable中分配给startDateString的值是您期望的值?检查什么是
datatable.Rows[i][“item10”].ToString()
并将其发布在此处这是从DataRow返回的值的调试捕获。有什么想法吗?看起来您在datatable的日期末尾有一个空格。“24/01/2008”。通过调用Trim()删除该空格有可能从“item9”中提取该值吗“列不是日期?您确认从datatable分配给startDateString的值是您期望的值吗?检查什么是
datatable.Rows[i][“item10”]。ToString()
并在此处发布这是从DataRow返回的值的调试捕获。有什么想法吗?看起来在datatable“24/01/2008”的日期末尾有一个空格。通过调用Trim()删除该空格好球!!我昨天工作太晚了,似乎看不见前面的东西!谢谢大家给我的另一双眼睛。好球!!我昨天工作太晚了,似乎看不见前面的东西!谢谢大家给我的另一双眼睛。