web-dev-qa-db-ja.com

C#でTimespanをDateTimeに変換する

C#とMicrosoft.Office.Interopを使用してExcelワークシートデータを読み取っています。シートにはいくつかの日付値が含まれています。私がその値を読み取ろうとしているとき、それは単に数値(おそらくTimeSpan)を与えているだけです。この数値をDateTimeに変換する際に問題が発生しました。

以下はコードです:

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

ここで、wsExcel.WorkSheet

この数値(TimeSpan)をDateTimeに変換する方法を誰かが説明できますか?

貴重な時間を共有していただきありがとうございます。

10
IrfanRaza

あなたは次のことができます

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

DateTime conv = DateTime.FromOADate(d);
9
Dimi Takis

以下を使用してください。

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

それはすべて、数値がどのように見えるかに依存します; pこれは通常、ある間隔で、あるエポックへのオフセットです。たとえば、1970年1月1日からの秒数です。たとえば、次のようにしてください。

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

次に、日付が一致するまでAddMilliseconds(number)AddTicks(number)などを試します。

6
Marc Gravell

これは単なるアイシングです。Excelは日付を OLEオートメーション日付 として表します。これらの値は浮動小数点数であり、その整数部分は1899年12月30日の深夜0時からの日数です。負の場合はそれ以前です。グレコの答えはあなたに変換するための最良の方法を与えます:)

2
Tim Barrass