Преобразование Timespan в DateTime в C # - PullRequest
10 голосов
/ 25 января 2011

Я читаю данные листа Excel, используя C # и Microsoft.Office.Interop.Лист содержит некоторые значения даты.Когда я пытаюсь прочитать это значение, я просто даю число (вероятно, TimeSpan).У меня проблема с преобразованием этого числа в DateTime.

Ниже приведен код:

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

Где ws - Excel.WorkSheet.

Может кто-нибудь объяснить, как следуетЯ конвертирую это число (TimeSpan) в DateTime?

Спасибо, что поделились своим драгоценным временем.

Ответы [ 4 ]

9 голосов
/ 06 мая 2011

Используйте следующее:

DateTime dt = new DateTime().Add( TimeSpan.FromMilliseconds( 1304686771794 ) )
9 голосов
/ 25 января 2011

Вы можете сделать следующее

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

DateTime conv = DateTime.FromOADate(d);
6 голосов
/ 25 января 2011

Все зависит от того, как выглядит число; p Обычно это смещение в некотором интервале, в какой-то период - например, в секундах с 1 января 1970 года. Так что попробуйте, например:

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

, а затем попробуйте AddMilliseconds(number), AddTicks(number) и т. Д., Пока не совпадет дата.

2 голосов
/ 25 января 2011

Это просто глазурь: Excel представляет даты в виде Даты автоматизации OLE . Эти значения являются числами с плавающей запятой, целой частью которых является число дней после полуночи 30 декабря 1899 года. Ответ Греко дает вам лучший способ конвертировать:)

...