ToOADate・FromOADateメソッドは、日時の値をOLEオートメーション日時(double型・64ビット)の値に変換します。 このフォーマットでは時刻の種類は無視され、日時のみが変換されるという点に注意が必要です。 その他フォーマットの詳細などはToOADateメソッドのドキュメントを参照してください。
DateTime.ToOADate/FromOADateメソッドで日時⇄OLEオートメーション日時の変換をする
using System;
class Sample {
static void Main()
{
var dt = DateTime.Now;
var oadate = dt.ToOADate();
Console.WriteLine("{0:o} -> {1}", dt, oadate);
Console.WriteLine("{0} -> {1:o}", oadate, DateTime.FromOADate(oadate));
}
}
実行結果例
2013-04-01T15:00:30.1230000+09:00 -> 41365.6253486458 41365.6253486458 -> 2013-04-01T15:00:30.1230000
OLEオートメーション形式で表現できる最小(最古)の日時は0100年01月01日 00:00:00でありDateTimeで扱える範囲よりも狭いため、その範囲を越える値を変換しようとした場合はOverflowExceptionがスローされます。 (ArgumentOutOfRangeExceptionがスローされるToFileTimeメソッドとはスローされる例外が異なる点に注意してください)