10

我正在使用 C# 和 Microsoft.Office.Interop 读取 Excel 工作表数据。该工作表包含一些日期值。当我试图读取该值时,它只是给出了数字(可能是 TimeSpan)。我在将此数字转换为 DateTime 时遇到问题。

下面是代码:

TimeSpan ts = TimeSpan.Parse(((Range)ws.Cells[4, 1]).Value2.ToString());

ws在哪里Excel.WorkSheet

谁能解释我应该如何将这个数字(TimeSpan)转换为DateTime

感谢您分享您宝贵的时间。

4

4 回答 4

9

您可以执行以下操作

double d = double.Parse(((Range)ws.Cells[4, 1]).Value2.ToString());

DateTime conv = DateTime.FromOADate(d);
于 2011-01-25T07:52:52.667 回答
9

使用以下内容:

DateTime dt = new DateTime().Add( TimeSpan.FromMilliseconds( 1304686771794 ) )
于 2011-05-06T13:22:49.953 回答
6

这完全取决于数字的样子 ;p 这通常是某个时间间隔内的偏移量,进入某个时期 - 例如自 1970 年 1 月 1 日以来的秒数。所以试试,例如:

var when = new DateTime(1970,1,1).AddSeconds(number);

然后尝试AddMilliseconds(number)等,AddTicks(number)直到日期匹配。

于 2011-01-25T07:51:24.400 回答
2

这只是锦上添花:Excel 将日期表示为OLE 自动化日期。这些值是浮点数,其整数部分是 1899 年 12 月 30 日午夜之后的天数。或者之前,如果它是负数。Greco 的回答为您提供了转换的最佳方式:)

于 2011-01-25T08:00:26.387 回答