整数部が日付で小数部が時刻という具合である。
プログラムの中で日付型の変数に値があるかどうか、言い方を変えると使用されたかどうか、を判断するのにその値が0であるかどうかでチェックすることができた。
VB.NET(VB2005)になって仕様が変わってこの方法がそのまま使えなくなった。そこで違いを確認し、初期値(定義直後の値)を確認する方法をまとめた。
以下は日付型の変数にNow関数とDate関数(VB2005はToDay関数)で現在日時と現在日付を取得しそのまま表示させたものにVal関数とCDbl関数で変換を行っている。また変数を定義した直後の値も同様に表示している。VB2005の場合はToOADate関数でVB6のCDbl関数で取得したのと同様の結果が得られる。またToBinary関数ではVB6には無かった100ナノ秒単位までの値を含む64ビットのシリアル値を表示する。このToBinaryをみると定義直後の値が0であることが良く分かる。
・VB6の場合
Dim d1 As Date
d1 = Now
Text1.Text = d1
Label4.Caption = "Val : " & Val(d1) & vbCrLf & "CDbl : " & CDbl(d1)
Text2.Text = Date
Label5.Caption = "Val : " & Val(Date) & vbCrLf & "CDbl : " & CDbl(Date)
Dim d2 As Date
Text3.Text = d2
Label6.Caption = "Val : " & Val(d2) & vbCrLf & "CDbl : " & CDbl(d2)
・VB2005の場合
Dim d1 As DateTime = Now
TextBox1.Text = d1
Label4.Text = "Val : " & Val(d1) & vbCrLf & _
"ToOADate : " & d1.ToOADate & vbCrLf & _
"ToBinary : " & d1.ToBinary
TextBox2.Text = Today
Label5.Text = "Val : " & Val(Today) & vbCrLf & _
"ToOADate : " & Today.ToOADate & vbCrLf & _
"ToBinary : " & Today.ToBinary
Dim d2 As Date
TextBox3.Text = d2
Label6.Text = "Val : " & Val(d2) & vbCrLf & _
"ToOADate : " & d2.ToOADate & vbCrLf & _
"ToBinary : " & d2.ToBinary

