ToOADate・FromOADateメソッドは、日時の値をOLEオートメーション日時(double型・64ビット)の値に変換します。 このフォーマットでは時刻の種類は無視され、日時のみが変換されるという点に注意が必要です。 その他フォーマットの詳細などはToOADateメソッドのドキュメントを参照してください。
DateTime.ToOADate/FromOADateメソッドで日時⇄OLEオートメーション日時の変換をする
Imports System
Class Sample
Shared Sub Main()
Dim dt As DateTime = DateTime.Now
Dim oadate As Double = dt.ToOADate()
Console.WriteLine("{0:o} -> {1}", dt, oadate)
Console.WriteLine("{0} -> {1:o}", oadate, DateTime.FromOADate(oadate))
End Sub
End Class
実行結果例
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メソッドとはスローされる例外が異なる点に注意してください)