我正在使用C#和Microsoft.Office.Interop阅读Excel工作表数据。工作表包含一些日期值。当我试图读取该值时,它只是给出了数字(可能是TimeSpan)。我在将此号码转换为DateTime时遇到问题。
以下是代码:
TimeSpan ts = TimeSpan.Parse(((Range)ws.Cells[4, 1]).Value2.ToString());
ws
为Excel.WorkSheet
。
有人可以解释我该如何将这个号码(TimeSpan
)转换为DateTime
?
感谢您分享宝贵的时间。
答案 0 :(得分:9)
您可以执行以下操作
double d = double.Parse(((Range)ws.Cells[4, 1]).Value2.ToString());
DateTime conv = DateTime.FromOADate(d);
答案 1 :(得分:9)
使用以下内容:
DateTime dt = new DateTime().Add( TimeSpan.FromMilliseconds( 1304686771794 ) )
答案 2 :(得分:6)
这一切都取决于数字的含义; p通常是某个时间间隔内的偏移量,进入某个时期 - 例如1970年1月1日以来的秒数。所以试试,例如:
var when = new DateTime(1970,1,1).AddSeconds(number);
然后尝试AddMilliseconds(number)
,AddTicks(number)
等,直到日期匹配。
答案 3 :(得分:2)
这只是结冰:Excel将日期表示为OLE automation dates。这些值是浮点数,其整数部分是1899年12月30日午夜之后的天数。或之前,如果它是负数。 Greco的答案为您提供了转换的最佳方式:)