日付型 (Date) (Visual Basic)
IEEE 64 ビット (8 バイト) の整数として格納され、西暦 0001 年 1 月 1 日から西暦 9999 年 12 月 31 日までの日付と、午前 12:00:00 から午後 11:59:59.9999999 までの時刻を表します。 増分は、グレゴリオ暦の西暦 1 年 1 月 1 日からの経過時間の 100 ナノ秒を表します。 最大値は、西暦 10000 年 1 月 1 日の 100 ナノ秒前です。
解説
Date データ型は、日付、時刻、およびその両方の値を格納するのに使用します。
Date の既定値は 0001 年 1 月 1 日の 0:00:00 (午前 0 時) です。
DateAndTime クラスから現在の日付および時刻を取得できます。
書式の要件
Date リテラルは、シャープ記号 (# #) で囲む必要があります。 日付の値は、#5/31/1993# のように M/d/yyyy の形式で指定します。 この要件は、ロケールやコンピューターの日付と時刻の設定とは無関係です。
この要件は、アプリケーションが実行されているロケールによってコードの意味が変わってしまうことがないようにするために設けられています。 たとえば、#3/4/1998# という Date リテラルをハードコーディングし、これを 1998 年 3 月 4 日の意味で使用する場合を考えます。 mm/dd/yyyy という形式を使用するロケールでは、3/4/1998 が意図したとおりにコンパイルされます。 しかし、このアプリケーションが複数の国で使用される場合を考えてみましょう。 dd/mm/yyyy という形式を使用するロケールでは、ハードコーディングされたリテラルは 1998 年 4 月 3 日としてコンパイルされます。 yyyy/mm/dd という形式を使用するロケールでは、このリテラルは無効な値 (0003 年 4 月 1998 日) となり、コンパイラ エラーとなります。
問題回避
Date リテラルを、使用されるロケールの形式やカスタム形式に変換するには、リテラルを Format 関数に渡し、定義済みの日付形式またはユーザー定義の日付形式を指定します。 次に例を示します。
MsgBox("The formatted date is " & Format(#5/31/1993#, "dddd, d MMM yyyy"))
または、DateTime 構造体のいずれかのオーバーロードされたコンストラクターを使用して、日付と時刻の値をアセンブルします。 次の例では、1993 年 5 月 31 日午後 12:14 を表す値を作成します。
Dim dateInMay As New System.DateTime(1993, 5, 31, 12, 14, 0)
時刻の形式
時刻の値は 12 時間制または 24 時間制で指定できます。たとえば、#1:15:30 PM# または #13:15:30# のようになります。 ただし、分や秒を指定しない場合は、AM または PM を指定する必要があります。
日付と時刻の既定値
日時のリテラルに日付が含まれない場合は、Visual Basic によって日付の部分の値が 0001 年 1 月 1 日に設定されます。 日時のリテラルに時刻が含まれない場合は、時刻の部分の値が 1 日の始まり、つまり深夜 0 時に設定されます。
型変換
Date の値を String 型に変換する場合、日付は実行時ロケールで指定された短い日付形式で表示され、時間は実行時ロケールで指定された時刻形式 (12 時間制または 24 時間制) で表示されます。
プログラミングのヒント
相互運用の考慮事項。オートメーションまたは COM オブジェクトのように、.NET Framework 向けに作成されていないコンポーネントとやり取りする場合、他の環境の日付/時刻の型は Visual Basic の Date 型と互換性がないことに注意してください。 そのようなコンポーネントに日付/時刻の引数を渡す場合は、新しい Visual Basic のコードで、Date 型ではなく Double として宣言し、DateTime.FromOADate および DateTime.ToOADate の変換メソッドを使用します。
型宣言文字。 Date 型には、リテラルの型文字も識別子の型文字もありません。 ただし、コンパイラでは、# # (シャープ記号) で囲まれたリテラルは日付型 (Date) として処理されます。
Framework のデータ型。.NET Framework において対応する型は、DateTime 構造体です。
使用例
Date データ型の変数または定数は、日付と時刻の両方を格納します。 次に例を示します。
Dim someDateAndTime As Date = #8/13/2002 12:14 PM#