DateDiff
DateDiff関数は2つの日付や時間の間隔を計算する際に利用します。
日単位や秒単位などの間隔単位は引数で指定が可能です。
DateDiff関数には5つの引数がありますが、4つ目と5つ目は利用することはまずありません。書籍でも省略されていることが多々あります。私も使ったことありません。
構文
1 |
Function DateDiff(Interval As String, Date1, Date2, [FirstDayOfWeek As VbDayOfWeek = vbSunday], [FirstWeekOfYear As VbFirstWeekOfYear = vbFirstJan1]) As Long |
Interval | 算出する間隔単位を文字列で指定します。指定は以下の10種類のいずれかを指定します。年”yyyy”と月”m”を同時に”yyyym”のような指定は出来ません。
|
|||||||||||||||||||||||||||
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はWindows7であればコントロールパネル→地域と言語→形式タブ の「週の最初の曜日」に設定されている曜日になります。 |
|||||||||||||||||||||||||||
FirstWeekOfYear | 設定しても意味がないパラメータです。何を指定しても既定値のvbFirstJan1として動作します。
本来は指定日付が年の始まりから何週目なのかを取得する際に、年の始まりの週をいつとするのかを指定すると思われますが、以下の4つの定数のいずれを設定しても値は同じになります。仮に正しく動作したとしても日本の場合は1月1日が含まれる週が年の第1週目として数えますので通常は既定値のvbFirstJan1のままで問題ありません。 VbFirstWeekOfYear列挙型
|
|||||||||||||||||||||||||||
Long(戻り値) | 引数Intervalの単位で2つの日付または時刻引数の間隔を返します。 |
日付のサンプルコード
日付間の間隔を取得するサンプルです。何週目(”ww”)や週の何日目(”w”)などの間隔はほとんど使わないと思いますので省略します。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub DateDiffDateTest() Dim diff diff = DateDiff("yyyy", "2017/1/1", #1/2/2018#) Debug.Print "yyyy:年の間隔:" & diff diff = DateDiff("m", "2017/1/1", #1/2/2018#) Debug.Print "m :月の間隔:" & diff diff = DateDiff("d", "2017/1/1", #1/2/2018#) Debug.Print "d :日の間隔:" & diff End Sub |
実行結果
1 2 3 |
yyyy:年の間隔:1 m :月の間隔:12 d :日の間隔:366 |
時刻のサンプルコード
10時ちょうどから12:34:56までの時刻間隔を取得するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub DateDiffTimeTest() Dim diff diff = DateDiff("h", "10:00:00", #12:34:56 PM#) Debug.Print "h:時の間隔:" & diff diff = DateDiff("n", "10:00:00", #12:34:56 PM#) Debug.Print "n:分の間隔:" & diff diff = DateDiff("s", "10:00:00", #12:34:56 PM#) Debug.Print "s:秒の間隔:" & diff End Sub |
実行結果
1 2 3 |
h:時の間隔:2 n:分の間隔:154 s:秒の間隔:9296 |