Преобразование Timespan в DateTime в С#

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

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

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

Где ws Excel.WorkSheet.

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

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

Ответ 1

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

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

DateTime conv = DateTime.FromOADate(d);

Ответ 2

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

DateTime dt = new DateTime().Add( TimeSpan.FromMilliseconds( 1304686771794 ) )

Ответ 3

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

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

а затем попробуйте AddMilliseconds(number), AddTicks(number) и т.д. до даты.

Ответ 4

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