DateDiff

DateDiff関数は2つの日付や時間の間隔を計算する際に利用します。

日単位や秒単位などの間隔単位は引数で指定が可能です。

DateDiff関数には5つの引数がありますが、4つ目と5つ目は利用することはまずありません。書籍でも省略されていることが多々あります。私も使ったことありません。


構文

Interval 算出する間隔単位を文字列で指定します。指定は以下の10種類のいずれかを指定します。年”yyyy”と月”m”を同時に”yyyym”のような指定は出来ません。

文字形式 内容
“yyyy”
“m”
“d”
“ww” 週(1月1日の週から何週目か)
“w” 週日
“q” 四半期
“y” 年間通算日
“h”
“n”
“s”
Date1 間隔を算出する元の日付や時刻を指定します。指定する形式にはDate型、文字列(例:”2017/12/9″、”10:12:09″)、日付リテラル(例:#12/12/2017#、#10:00:00 AM#)があります。
Date2 Date1と比較したい日付や時刻を指定します。指定できる形式はDate1と同じです。
FirstDayOfWeek 曜日を表す1から7の数字のうち、何曜日を1とするのかを指定します。日本の場合は日曜日を週の始まりとすることが多いため、通常は省略して既定値のvbSundayのままで問題ありません。Intervalが”w”の場合にのみ有効になります。それ以外の場合は指定していても無視されます。

VbDayOfWeek列挙型

定数 内容
vbUseSystemDayOfWeek 0 Windowsのカレンダーの設定で週の最初の曜日に指定された曜日が設定されます。
vbSunday 1 日曜日を1とします。既定値です。
vbMonday 2 月曜日を1とします。
vbTuesday 3 火曜日を1とします。
vbWednesday 4 水曜日を1とします。
vbThursday 5 木曜日を1とします。
vbFriday 6 金曜日を1とします。
vbSaturday 7 土曜日を1とします。

vbUseSystemDayOfWeekはWindows7であればコントロールパネル→地域と言語→形式タブ の「週の最初の曜日」に設定されている曜日になります。

FirstWeekOfYear 設定しても意味がないパラメータです。何を指定しても既定値のvbFirstJan1として動作します。

本来は指定日付が年の始まりから何週目なのかを取得する際に、年の始まりの週をいつとするのかを指定すると思われますが、以下の4つの定数のいずれを設定しても値は同じになります。仮に正しく動作したとしても日本の場合は1月1日が含まれる週が年の第1週目として数えますので通常は既定値のvbFirstJan1のままで問題ありません。

VbFirstWeekOfYear列挙型

定数 内容
vbUseSystem 0 システム設定
vbFirstJan1 1 1月1日の週を年の第1週とする
vbFirstFourDays 2 新しい年の日付が4日含まれる週を年の第1週とする
vbFirstFullWeek 3 週の全ての日が新しい年の週を年の第1週とする。
Long(戻り値) 引数Intervalの単位で2つの日付または時刻引数の間隔を返します。



日付のサンプルコード

日付間の間隔を取得するサンプルです。何週目(”ww”)や週の何日目(”w”)などの間隔はほとんど使わないと思いますので省略します。

実行結果



時刻のサンプルコード

10時ちょうどから12:34:56までの時刻間隔を取得するサンプルです。

実行結果