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'变成月份并得到验证错误。
试图解决代码:
Date2Val = Convert.ToDateTime(TestContext.DataRow["Date2"]).ToString("dd-MM-yyyy 00:00:00.000");
适用于Date1列,但不适用于Date2。
答案 0 :(得分:1)
Convert.ToDateTime
使用CurrentCulture
的{{3}}。
这意味着您的CurrentCulture
有dd-MM-yyyy
作为标准日期和时间格式,而不是MM-dd-yyyy
。
您可以<{3}}方法明确使用standard date and time format明确指定格式;
Date2Val = DateTime.ParseExact(TestContext.DataRow["Date2"].ToString(),
"MM-dd-yyyy",
CultureInfo.InvariantCulture)
.ToString("dd-MM-yyyy 00:00:00.000");
答案 1 :(得分:0)
您需要明确说明日期值的格式,因为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");
答案 2 :(得分:0)
也许会强制将数据转换为字符串,以防止自动转换,然后在代码中将其解析为DateTime。 我在数据顶部放置了两个qoutes强制将其作为文本。这样就可以返回字符串,而不会删除引号。
columnInt, columnString
1, "11.12.89"
2, "12.12.89"