Ответ 1
Вы можете сделать следующее
double d = double.Parse(((Range)ws.Cells[4, 1]).Value2.ToString());
DateTime conv = DateTime.FromOADate(d);
Я читаю данные таблицы Excel с помощью С# и Microsoft.Office.Interop. Лист содержит некоторые значения даты. Когда я пытаюсь прочитать это значение, он просто дает число (возможно, TimeSpan). У меня проблема с преобразованием этого числа в DateTime.
Ниже приведен код:
TimeSpan ts = TimeSpan.Parse(((Range)ws.Cells[4, 1]).Value2.ToString());
Где ws
Excel.WorkSheet
.
Может кто-нибудь объяснить, как мне преобразовать это число (TimeSpan
) в DateTime
?
Спасибо, что поделились своим ценным временем.
Вы можете сделать следующее
double d = double.Parse(((Range)ws.Cells[4, 1]).Value2.ToString());
DateTime conv = DateTime.FromOADate(d);
Используйте следующее:
DateTime dt = new DateTime().Add( TimeSpan.FromMilliseconds( 1304686771794 ) )
Все зависит от того, как выглядит число: p Обычно это смещение в некоторый интервал, в какую-то эпоху - например, секунды с 1 января 1970 года. Поэтому попробуйте, например:
var when = new DateTime(1970,1,1).AddSeconds(number);
а затем попробуйте AddMilliseconds(number)
, AddTicks(number)
и т.д. до даты.
Это просто обледенение: Excel представляет даты как даты автоматизации OLE. Эти значения являются числами с плавающей запятой, целой частью которых является число дней после полуночи, 30 декабря 1899 года. Или раньше, если оно отрицательное. Ответ Greco дает вам лучший способ конвертировать:)