OR
誰でも自由に記事を投稿・編集できるオープンリファレンス
記事ID:277
区分:プログラム  |  分類:VB  |  最終更新日:2014/06/20
クリエイティブ・コモンズ 表示-継承ライセンス 2.1
【VB】DateDiff関数
関連タグ:VBA, VB6, VB.NET, 関数, 日付, 時刻, 差分, 間隔
このエントリーをはてなブックマークに追加      
本文
履歴
編集
閲覧数: 104,707
VB6関連技術まとめ > VB関数一覧 > 【VB】DateDiff関数

指定された 2 つの日時の差分を指定の単位で返す関数です。

日時の差分を返すため、指定の期間の日数や年数、経過時間などを求めることができます。

関数仕様

構文 DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
引数
引数 省略 説明
interval 不可

計算する時間単位を表す以下の文字列式を指定します。

設定値 内容

yyyy

q

四半期

m

y

年間通算日

d

w

曜日

ww

h

n

s

date1

date2

不可

間隔を計算する 2 つの日付を指定します。

date1 より date2 が大きい(未来)の場合、この関数は正数を返します。

date1 より date2 が小さい(過去)の場合、この関数は負数を返します。

firstdayofweek

週の始まりの曜日を定数を指定します。

省略した場合は、定数 vbSunday が規定値となります。

定数 内容

vbUseSystem

0

各国語対応APIの設定値を使います

vbSunday

1

日曜(規定値)

vbMonday

2

月曜

vbTuesday

3

火曜

vbWednesday

4

水曜

vbThursday

5

木曜

vbFriday

6

金曜

vbSaturday

7

土曜
firstweekofyear

年度の第 1 週の定義を指定します。

省略した場合は、定数 vbFirstJan1 が規定値となります。

定数 内容

vbUseSystem

0

各国語対応APIの設定値を使います。

vbFirstJan1

1

1 月 1 日を含む週を年度の第 1 週として扱います。(規定値)

vbFirstFourDays

2

7 日のうち少なくとも 4 日が新年度に含まれる週を年度の第 1 週として扱います。

vbFirstFullWeek

3

7 日全てが新年度に含まれる週を年度の第 1 週として扱います。
戻り値

バリアント型(内部処理形式 Integer の Variant)

 

この関数は、引数に指定した 2 つの日時の差分(間隔)を求め、結果をバリアント型 (内部処理形式 Integer の Variant) で返します。 引数に指定する 2 つの日時のうち、より小さい方(より過去)の日付を date1 に、より大きい方の日付を date2 に指定すると、差分を正数で返します。 逆により大きい方(より未来)の日付を date1 に、より小さい方の日付を date2 に指定すると、差分を負数で返します。 この関数が有効とする日付の範囲は、西暦 100 年 1 月 1 日 ~ 9999 年 12 月 31 日であり、指定日がその範囲を超える場合は、実行時エラーとなります。

動作検証

条件 動作結果

年の差分を指定した場合

DateDiff("yyyy", "2009/1/2", "2012/12/31")

3
四半期(q)の差分を指定した場合

DateDiff("q", "2012/1/2", "2012/9/2")

2

月(m)の差分を指定した場合

DateDiff("m", "2012/6/30", "2012/1/2")

-5(※1

年間通算日(y)の差分を指定した場合

DateDiff("y", "2012/1/2", "2012/4/2")

91(※2

日(d)の差分を指定した場合

DateDiff("d", "2012/1/2", "2012/4/2")

91(※2

曜日(w)の差分を指定した場合

DateDiff("w", "2012/1/2", "2012/1/22")

2(※3

週(ww)の差分を指定した場合

DateDiff("ww", "2012/1/2", "2012/1/22")

3(※4

時(h)の差分を指定した場合

DateDiff("h", "12:34:56", "16:01:02")

5

分(n)の差分を指定した場合

DateDiff("n", "12:34:56", "16:01:02")

207

秒(s)の差分を指定した場合

DateDiff("s", "12:34:56", "16:01:02")

12366

存在しない日付を指定した場合

DateDiff("d", "2012/1/32", "2012/2/22")

実行時エラー

日付と評価できない文字列を指定した場合

DateDiff("d", "2012/1/31", "test")

実行時エラー

日付と評価できない数値を指定した場合

DateDiff("d", 1, 3)

2(※5

日付にNull値を指定した場合

DateDiff("d", "2012/1/2",  Null)

Null(※6

※1 date1 より date2 の方が小さい(より過去である)場合、返る値は負数となります。

※2 年間通算日(y)、日(d)は、いずれも日にちを計算する為、結果は同じになります。

※3 曜日(w)を指定した場合、date1 の曜日が date2 までの間にいくつあるかを返します。(暦上の週数ではありません)

※4 週(ww)を指定した場合、date1 と date2 の間の日曜の数を返します。(暦上の週数を返します)

※5 日付に数値を指定した場合、この関数は「1899/12/30」を 0 として、そこからの日数で日付を算出し、その値に対して差分計算を行います。

※6 日付に Null 値を指定した場合、この関数は Null を返します。 エラーとはなりません。

サンプルコード

Sub Sample()
    Debug.Print DateDiff("d", Now, "2012/6/3")
End Sub

※ 上記サンプルは現在から指定日までの残り日数を返します。

関連記事
関連記事はありません。
外部リンク
外部リンクはありません。
- 記事検索 -