我有一個正在讀取的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
轉換日期/時間還是我失去了一些東西的時候這是典型的?
謝謝
我有一個正在讀取的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
轉換日期/時間還是我失去了一些東西的時候這是典型的?
謝謝
只需將單元格格式化爲日期。 41844.446908680555是Excel的序列化日期值的方式。
當Excel將日期或時間存儲在數字格式中時,日期爲1900年1月1日= 1 所以,當您使用日期格式存儲日期時,實際上只是存儲數值一天中的數目相等的部分的分數的日期和1900年1月1
因此,例如,365之間的差異=揚30-1900
和所謂0.5 =半天或12小時。
而對於它的樂趣,現在= 41885.75或九月-3-2014下午6點或41885.75從1月1日1900年
之所以這樣做是允許的,現在在數學函數中使用日期。它還處理許多彈出日期如閏年的問題,並且還提供了處理時區的更簡單的方法。
看來,DateTime.FromOADate(double.Parse(value));截斷而不是舍入小數秒。 Excel將日期/時間存儲爲自1900年1月1日以來的幾天和幾小時(因1900年閏年的故意錯誤,據稱此時與Lotus 123兼容)。
因此,數41844.446908680555轉換爲,給定的Excel的水平的精度
(實際上:2014年7月24日10點43分:32.9099949030205)