我正在构建一个读取.csv文件并将值添加到数据库的控制台应用程序。现在我有一些CSV列存储日期时间值。 但是这些列有时包含数秒时间,而有时却没有。以下是日期字段的一些数据示例: -
03/30/2016 10:55:49
04/01/2016 11:02
现在当我尝试将上面的字符串解析为日期时间时,如下所示: -
formattedDateCreated = DateTime.ParseExact(fields[DateCreatedIndex], "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
当我尝试解析第二个日期时,我将得到以下异常: -
String was not recognized as a valid DateTime
所以有人可以就此提出建议吗?我如何使我的Parse更加动态,可以使用秒或没有秒来处理日期格式? 感谢
答案 0 :(得分:3)
您可以使用支持多种格式的重载:
string[] formats = {"MM/dd/yyyy HH:mm:ss", "MM/dd/yyyy HH:mm" };
DateTime formattedDateCreated = DateTime.ParseExact(fields[DateCreatedIndex], formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
答案 1 :(得分:2)
DateTime.ParseExact
也可以采用多种格式:
var formats = new []
{
"MM/dd/yyyy HH:mm:ss",
"MM/dd/yyyy HH:mm"
};
var dates = "03/30/2016 10:55:49;04/01/2016 11:02".Split(';')
.Select(x => DateTime.ParseExact(x, formats, CultureInfo.InvariantCulture, DateTimeStyles.None));