2014-09-04 69 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)