当有任何日期字段时,不能正确读取CSV
本文关键字:不能 读取 CSV 任何 日期 字段 | 更新日期: 2023-09-27 18:05:22
csv文件数据-
DB PID Date1 Date2
--------------------------------
DB1 561 06-04-2015 06-05-2015
DB2 538 06-04-2015 08-21-2015
DB3 722 06-04-2015 08-21-2015
这里的日期格式声明为MM-DD-YYYY
。问题是,在读取Date2列日期时,它将日期读取为DD-MM-YYYY
。这就是为什么在08-21-2015中,'08'变成了DD, '21'变成了month,并且出现了验证错误。
尝试解决代码:
Date2Val = Convert.ToDateTime(TestContext.DataRow["Date2"]).ToString("dd-MM-yyyy 00:00:00.000");
Convert.ToDateTime
使用CurrentCulture
的标准日期和时间格式。
这意味着你的CurrentCulture
有dd-MM-yyyy
作为标准日期和时间格式,而不是MM-dd-yyyy
。
您可以显式在DateTime.ParseExact
方法中使用自定义日期和时间说明符指定您的格式,如;
Date2Val = DateTime.ParseExact(TestContext.DataRow["Date2"].ToString(),
"MM-dd-yyyy",
CultureInfo.InvariantCulture)
.ToString("dd-MM-yyyy 00:00:00.000");
您需要显式地声明日期值的格式,因为DateTime.Parse
总是使用在系统区域性信息中配置的日期格式。
你需要的格式如下:
Date2Val = DateTime.ParseExact(TestContext.DataRow["Date2"].ToString(), "MM-dd-yyyy", CultureInfo.InvariantCulture).ToString("dd-MM-yyyy 00:00:00.000");
经过一番周折,你刚刚告诉我们,在Date2
中不仅有日期值,还有时间部分。在这种情况下,你需要使用这个:
Date2Val = DateTime.ParseExact(TestContext.DataRow["Date2"].ToString(), "MM-dd-yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd-MM-yyyy 00:00:00.000");
可能强制数据为字符串,以防止自动转换,然后在代码中将其解析为DateTime。我在数据周围加上双引号,使其成为文本。返回字符串,不删除引号。
columnInt, columnString
1, "11.12.89"
2, "12.12.89"