私はバイナリファイルを取得し、レコードフィールドの1つは日付情報を保存しました。VC++のDATE型をC#のDateTimeに変換するにはどうすればよいですか?
セーブプログラムは、VC++によって書かれ、DATE型を使用します。
どのようにC#のDateTime型にそれを読むことができますか?
私はDateTime.FromBinaryを試しましたが、間違っています。
私はバイナリファイルを取得し、レコードフィールドの1つは日付情報を保存しました。VC++のDATE型をC#のDateTimeに変換するにはどうすればよいですか?
セーブプログラムは、VC++によって書かれ、DATE型を使用します。
どのようにC#のDateTime型にそれを読むことができますか?
私はDateTime.FromBinaryを試しましたが、間違っています。
がOLE日付なら、hereから利用可能な情報を使用することは:
DATE型は 8バイトの浮動小数点数を使用して実装されています。日数は、 であり、整数の増分で表され、 から1899年12月30日まで、 深夜0時である。時間値は小数部として表される です。時刻 精度は1秒です。このタイプは で、日付専用( 小数部は0)または時刻限定 (整数部は0)の値を表すためにも使用されます。
これを使用すると、CLR DateTimeに変換できます。
Vinayの答えにあるように、VC++ DATEは実際には倍精度です。ダブルで読み込んだ後、説明に基づいて変換するだけです。
double CDate = 8.50; //The DATE from C++
DateTime newDate = new DateTime(1899, 12, 30); //Start at 12/30/1899
int days = (int)Math.Floor(CDate); //Get the days (integer part)
double hours = (CDate-days) * 24; //Get the hours (fraction part)
newDate = newDate.AddDays(days).AddHours(hours);
EDIT それともジョーにより示唆されるようDateTime.FromOADateを使用します。ここでは
は、変換のためのいくつかのサンプルコードです。
あなたは新しいものを学ぶことができます。
ありがとう、皆さん。ここが好きだよ。 – wupher