VBScriptで2つの日付の引き算(時間間隔)をする方法・DateDiff †
DateDiff関数を利用すると、引数に与えた2つの日付より時間間隔を求めることができます。
以下にDateDiff関数を利用したサンプルコードと実行例を記します。
(一部、WSHのヘルプファイルscript56.chmから抜粋)
関連記事 †
DateDiffの引数 †
DateDiff関数の引数は以下の通りです。
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
- interval(省略不可)
date1とdate2の時間間隔の単位を以下の文字列で指定します。
intervalに設定する文字列 | 設定文字列の説明 |
yyyy | 年 |
q | 四半期 |
m | 月 |
y | 年間通算日 |
d | 日 |
w | 週日 |
ww | 週 |
h | 時 |
n | 分 |
s | 秒 |
- date1, date2(省略不可)
間隔を算出する2つの日付式を指定する。
- firstdayofweek(省略可能)
週の始まりの曜日を表す定数を指定する。
省略した場合は日曜日はじまりになります。
定数 | 数値 | 説明 |
vbUseSystemDayOfWeek | 0 | 各国語対応 (NLS) API の設定値を使用します。 |
vbSunday | 1 | 日曜日 (既定値) |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
vbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
- firstweekofyear(省略可能)
年度の第1週を表す定数を指定する。
省略すると、1月1日を含む週が第1週として指定される。
定数 | 数値 | 説明 |
vbUseSystem | 0 | 各国語対応 (NLS) API の設定値を使用します。 |
vbFirstJan1 | 1 | (既定値) 1 月 1 日を含む週を年度の第 1 週として扱います。 |
vbFirstFourDays | 2 | 7 日のうち少なくとも 4 日が新年度に含まれる週を年度の第 1 週として扱います。 |
vbFirstFullWeek | 3 | 全体が新年度に含まれる最初の週を年度の第 1 週として扱います。 |
DateDiffのサンプルコードおよび実行例 †
- サンプルコード
DateDiffのサンプルコードを以下に記します。
ファイル名: DateDiff.vbs
WScript.Echo "No.1 interval = m, date1, date2 = 2013/1/1, 2013/12/31"
WScript.Echo DateDiff("m", "2013/1/1", "2013/12/31")
WScript.Echo "No.2 interval = d, date1, date2 = 2013/1/1, 2013/12/31"
WScript.Echo DateDiff("d", "2013/1/1", "2013/12/31")
WScript.Echo "No.3 interval = w, date1, date2 = 2013/1/1, 2013/12/31"
WScript.Echo DateDiff("w", "2013/1/1", "2013/12/31")
WScript.Echo "No.4 interval = yyyy, date1, date2 = 2012/12/31, 2013/1/1"
WScript.Echo DateDiff("yyyy", "2012/12/31", "2013/1/1")
WScript.Echo "No.5 interval = yyyy, date1, date2 = 2013/1/1, 2013/12/31"
WScript.Echo DateDiff("yyyy", "2013/1/1", "2013/12/31")
- 実行結果出力
C:\Users\sakura\Desktop>cscript DateDiff.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
No.1 interval = m, date1, date2 = 2013/1/1, 2013/12/31
11
No.2 interval = d, date1, date2 = 2013/1/1, 2013/12/31
364
No.3 interval = w, date1, date2 = 2013/1/1, 2013/12/31
52
No.4 interval = yyyy, date1, date2 = 2012/12/31, 2013/1/1
1
No.5 interval = yyyy, date1, date2 = 2013/1/1, 2013/12/31
0
No.4に注目すると日は一日しか経過していませんが、年をまたいでいます。
このような場合は1が返却されるので注意してください。
いくつか動作確認をしてから使用することをおすすめします。
|