.NET C#读取Excel文件DateTime列读取的时间少了1秒,为什么?

时间:2012-03-06 13:22:13

标签: .net excel datetime

我有一个excel文件,其中一个列具有DateTime值:

01.03.2012 10:00
02.03.2012 10:00
03.03.2012 10:00
04.03.2012 10:00

我正在阅读这段代码:

OleDbDataAdapter command = new OleDbDataAdapter("select * from [" + sheetName + "$]", Conn);
command.Fill(Result);

有趣的是,excel文件中的数据与此完全相同(第一列是正确的,但其他1秒则少)

01.03.2012 10:00:00
02.03.2012 09:59:59
03.03.2012 09:59:59
04.03.2012 09:59:59

剩下的值是09:59:59 ...只有第一个值正确地来到数据表。

为什么我遇到这个问题并想知道如何让它们与Excel文件完全一致?

我非常感谢任何帮助。 提前谢谢,

2 个答案:

答案 0 :(得分:2)

在Excel工作表中实际上不是10:00,因为Excel不保留该格式的时间:

  • 一秒保持为1 /(24 * 60 * 60)= 0.00001157407
  • 10:00:00被保持为0.41666666667
  • 9:59:59保持为0.41665509259

将您的时间复制到其他单元格并将其格式化为带有七位或八位小数的数字。我的猜测是转换为9:59:59的值小于0.41666666667并且被截断而不是舍入。

答案 1 :(得分:1)

我怀疑您在Excel电子表格中确实有09:59:59,并且显示格式会将时间“舍入”到10:00。检查应用了哪种单元格格式。