2014-09-04 65 views
0

我有一个正在读取的Excel电子表格。从excel中读取日期并不完全正确

在电子表格中的值是7/24/2014 10:43:33 AM

被读取使用的OpenXML是41844.446908680555后的细胞的值。

当我做这个计算转换为一个日期:

dte = DateTime.FromOADate(double.Parse(value)); 

我得到7/24/2014 10:43:32 AM

转换日期/时间还是我失去了一些东西的时候这是典型的?

谢谢

回答

0

只需将单元格格式化为日期。 41844.446908680555是Excel的序列化日期值的方式。

0

当Excel将日期或时间存储在数字格式中时,日期为1900年1月1日= 1 所以,当您使用日期格式存储日期时,实际上只是存储数值一天中的数目相等的部分的分数的日期和1900年1月1

因此,例如,365之间的差异=扬30-1900

和所谓0.5 =半天或12小时。

而对于它的乐趣,现在= 41885.75或九月-3-2014下午6点或41885.75从1月1日1900年

之所以这样做是允许的,现在在数学函数中使用日期。它还处理许多弹出日期如闰年的问题,并且还提供了处理时区的更简单的方法。

2

看来,DateTime.FromOADate(double.Parse(value));截断而不是舍入小数秒。 Excel将日期/时间存储为自1900年1月1日以来的几天和几小时(因1900年闰年的故意错误,据称此时与Lotus 123兼容)。

因此,数41844.446908680555转换为,给定的Excel的水平的精度

  • 2014年7月24日10:43:32.910

(实际上:2014年7月24日10点43分:32.9099949030205)