1

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

当我在此处提供的代码中使用注释掉的行并将日期明确定义为字符串时,ParseExact就可以正常工作。当我调试集成测试时,startDateString具有正确的日期值。调试从 DataTable 中捕获值然后由于某种原因将其传递给ParseExact时,它会引发错误。

我试图使用明确的文化,例如。"en-GB" 和 DateStyles.None,但没有多大成功。有谁知道为什么 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"));  
                }
...
4

1 回答 1

1

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

于 2013-05-21T18:13:09.250 回答