DateDiff関数
DateDiff関数は、VBA関数の中で日付・時刻関数に分類される関数です。
目次
DateDiff関数とは
DateDiff関数は、2 つの指定した日付の時間間隔を表すバリアント型 (内部処理形式 Date の Variant) の値を指定します。
構文 | DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) | |
---|---|---|
引数 | 省略 | 説明 |
interval | × | 名前付き引数 date1 と date2 の間隔を計算するための、時間単位を表す文字列式を指定します。 |
date1, date2 | × | この名前付き引数はバリアント型 (内部処理形式 Date の Variant) のデータ形式で指定します。間隔を計算する 2 つの日付を指定します。 |
firstdayofweek | ● | 週の始まりの曜日を表す定数を指定します。省略すると、日曜日を指定したものとみなされます。 |
firstweekofyear | ● | 年度の第 1 週を表す定数を指定します。省略すると、1 月 1 日を含む週が第 1 週とみなされます。 |
引数interval
設定値 | 説明 |
---|---|
yyyy | yyyy |
q | 四半期 |
m | 月 |
y | 年間通算日 |
d | 日 |
w | 週日 |
ww | 週 |
h | 時 |
n | 分 |
s | 秒 |
引数firstdayofweek
定数 | 値 | 説明 |
---|---|---|
vbUseSystem | 0 | NLS API の設定値を使います。 |
vbSunday | 1 | (既定値) 日曜 |
vbMonday | 2 | 月曜 |
vbTuesday | 3 | 火曜 |
vbWednesday | 4 | 水曜 |
vbThursday | 5 | 木曜 |
vbFriday | 6 | 金曜 |
vbSaturday | 7 | 土曜 |
引数firstweekofyear
定数 | 値 | 説明 |
---|---|---|
vbUseSystem | 0 | NLS API の設定値を使います。 |
vbFirstJan1 | 1 | (既定値) 1 月 1 日を含む週を年度の第 1 週として扱います。 |
vbFirstFourDays | 2 | 7 日のうち少なくとも 4 日が新年度に含まれる週を年度の第 1 週として扱います。 |
vbFirstFullWeek | 3 | 全体が新年度に含まれる最初の週を年度の第 1 週として扱います。 |
DateDiff 関数を使うと、指定した時間単位で 2 つの日付の時間間隔を調べることができます。たとえば、2 つの日付の間の日数や、現在から年末までの週の数などを求めることができます。
名前付き引数 date1 と date2 の間の日数を求めるには、年間通算日 ("y") か、日 ("d") のいずれかを指定します。名前付き引数 interval に週日 ("w") を指定すると、2 つの日付の間の週の数が計算されます。名前付き引数 date1 が月曜日の場合は、名前付き引数 date2 までの間の月曜日の数が返されます。このとき名前付き引数 date2 の月曜日は計算に入りますが、名前付き引数 date1 の月曜日は計算に入りません。一方、名前付き引数 interval に週 ("ww") を指定した場合は、2 つの日付の間の暦上の週の数が計算されます。つまり、名前付き引数 date1 と date2 の間の日曜日の数が返されます。名前付き引数 date2 に指定した日付が日曜日であれば、名前付き引数 date2 は計算に入りますが、名前付き引数 date1 は日曜日であっても計算に入りません。
名前付き引数 date2 よりも時間的に後の日付を名前付き引数 date1 に指定すると、DateDiff 関数は負の数を返します。名前付き引数 firstdayofweek は、名前付き引数 interval に週 ("ww") を指定した場合の計算値に影響します。
名前付き引数 date1 または date2 に日付リテラルを指定した場合、指定した年が日付の固定部分となります。ただし、名前付き引数 date1 または date2 をダブル クォーテーション (" ") で囲み、年を省略すると、名前付き引数 date1 または date2 の式が評価されるたびにコードに現在の年が挿入されます。これを利用すると、異なる年度で使用できるコードを記述することが可能になります。
12 月 31 日とその次の年の 1 月 1 日を比較すると、DateDiff 関数の年 ("yyyy") は、1 日後であっても、1 を返します。
Calendar プロパティの設定がグレゴリオ暦の場合、引数 date1 および date2 にはグレゴリオ暦で表される日付を指定する必要があります。Calendar プロパティの設定が回教暦の場合、引数 date1 および date2 には回教暦で表される日付を指定する必要があります。
DateDiff関数のサンプルコード次の例は、DateDiff 関数を使って、指定された日付までの日数を取得します。
Sub sample()
Dim TheDate As Date ' 変数を宣言します。
Dim Msg
TheDate = InputBox("日付を入力してください。")
Msg = "今日からの日数: " & DateDiff("d", Now, TheDate)
MsgBox Msg
End Sub
実行結果
解説
日付・時刻関数一覧
関数名 | 内容 |
---|---|
Date | 現在のシステム日付を算出します。 |
DateAdd | 指定した期間を加えた値を算出します。 |
DateDiff | 指定した時間単位で、2つの日付の差を算出します。 |
DatePart | 日付の指定した部分を算出します。 |
DateSerial | 指定した年月日に対応するバリアント型の値を算出します。 |
DateValue | 日付を表すバリアント型の値を算出します。 |
Day | 指定した日付から、日を表す1~31までの値を算出します。 |
Hour | 指定した時刻から、時間を表す0~23の値を算出します。 |
Minute | 指定した時刻から、分を表す0~59の値を算出します。 |
Month | 指定した日付から、月を表す1~12までの値を算出します。 |
Now | 現在のシステム日付と時刻を算出します。 |
Second | 指定した時刻から、秒を表す0~59の値を算出します。 |
Time | 現在のシステム時刻を算出します。 |
Timer | 午前0時から経過した秒数を算出します。 |
TimeSerial | 指定した時分秒をバリアント型の値で算出します。 |
TimeValue | 時刻をバリアント型の値で取得します。 |
Weekday | 指定した日付の曜日を算出します。 |
Year | 指定した日付の年を算出します。 |