C#とMicrosoft.Office.Interopを使用してExcelワークシートデータを読み取っています。シートにはいくつかの日付値が含まれています。私がその値を読み取ろうとしているとき、それは単に数値(おそらく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これは通常、ある間隔で、あるエポックへのオフセットです。たとえば、1970年1月1日からの秒数です。たとえば、次のようにしてください。
_var when = new DateTime(1970,1,1).AddSeconds(number);
_
次に、日付が一致するまでAddMilliseconds(number)
、AddTicks(number)
などを試します。
これは単なるアイシングです。Excelは日付を OLEオートメーション日付 として表します。これらの値は浮動小数点数であり、その整数部分は1899年12月30日の深夜0時からの日数です。負の場合はそれ以前です。グレコの答えはあなたに変換するための最良の方法を与えます:)