我正在編寫一個集成測試,因此我正在讀取一個CSV文件作爲DataTable,然後嘗試解析每行中的元素。然而,當我得到一個日期的字符串表示,並把它傳遞到DateTime.ParseExact我得到的錯誤:「字符串未被識別爲有效的DateTime」ParseExact無法識別從DataTable中提取的字符串
當我使用註釋掉的行代碼我在這裏提供,並明確定義日期爲一個字符串,然後ParseExact工作得很好。當我調試集成測試時,startDateString具有正確的日期值。 當它傳入ParseExact由於某些原因它會引發錯誤。
我試圖使用明確的文化,例如。 「en-GB」和DateStyles.None,沒有太大的成功。有沒有人有任何想法,至於爲什麼從DataRow得到的字符串輸入不被DateTime.ParseExact構造函數接受?
謝謝。
...
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"));
}
...
是否有可能從「item9」列中拉出的值不是日期?你確認從數據表中分配給startDateString的值是你期望的嗎? – Jeff
檢查dataTable.Rows [i] [「item10」]。ToString()'並在此處發佈 – oleksii
以下是從DataRow返回的值的調試捕獲。有任何想法嗎? – cmdel