C# 该字符串未被识别为有效的日期时间。文本格式的日期

C# 该字符串未被识别为有效的日期时间。文本格式的日期,c#,date,datetime,C#,Date,Datetime,我对文件导入有问题。我正在尝试将.xls文件导入SQL Server。但问题是日期格式。 经过一些调试,我发现我正在阅读文本格式的日期。 我的日期是f.E.:'01-01-2017',但调试时我看不到日期,我可以看到“42736”,这是日期的文本格式。 有人能帮我想一想如何解决这个问题吗 使用: DateTime-date=DateTime.fromodate(table.Rows[i].Field(2)); 如果这确实是一个字符串列(我对此表示怀疑): DateTime date=Date

我对文件导入有问题。我正在尝试将.xls文件导入SQL Server。但问题是日期格式。 经过一些调试,我发现我正在阅读文本格式的日期。 我的日期是f.E.:'01-01-2017',但调试时我看不到日期,我可以看到“42736”,这是日期的文本格式。 有人能帮我想一想如何解决这个问题吗

使用:

DateTime-date=DateTime.fromodate(table.Rows[i].Field(2));
如果这确实是一个字符串列(我对此表示怀疑):

DateTime date=DateTime.fromodate(double.Parse(table.Rows[i].Field(2));

您可以使用
DateTime.FromOADate()
方法

只需检查是否可以使用
double.TryParse()
方法将
strDate
解析为double即可。如果是这样,请使用
DateTime.FromOADate((double)strdate)
否则请使用默认方法

参考:


将excel转换为表格时使用的代码是什么?谢谢您的回答。它是一个字符串列,您的代码有帮助,但它只将文档的最后一行导入数据库。@Michelle:真的是字符串还是因为您使用了
ToString
?然而,下一个问题与此无关。因此,您可能想问另一个问题并插入所有相关代码。
string strDate = table.Rows[i][2].ToString();
  DateTime date = Convert.ToDateTime(strDate.Replace(".", "-"));


ImportToAP(Int32.Parse((table.Rows[i][26]).ToString()), date, Double.Parse((table.Rows[i][38]).ToString()), (table.Rows[i][33]).ToString(), Int32.Parse((table.Rows[1][4]).ToString()));
DateTime date = DateTime.FromOADate(table.Rows[i].Field<double>(2));
DateTime date = DateTime.FromOADate(double.Parse(table.Rows[i].Field<string>(2)));