VBScript - 日付の計算や間隔の取得
VBScript - 日付の計算や間隔の取得
日付を計算する関数、日付と日付の間隔を求める関数を紹介する。
日付を計算する
DateAdd 関数で日付の計算ができる。
DateAdd( Interval, Number, Date )
Interval
に追加する時間間隔を表す文字列を指定する(後述)。
Number
に追加する時間間隔を表す値を指定する。
プラスの数なら将来、マイナスの数なら過去の日時となる。
Date
に計算の元になる日付を指定する。
Interval
に指定できる値は以下のとおり。
値 | 内容 |
---|---|
yyyy |
年 |
q |
四半期 |
m |
月 |
y |
年間通算日 |
d |
日 |
w |
週日 |
ww |
週 |
h |
時 |
n |
分 |
s |
秒 |
例)10日後を求める。
WScript.Echo DateAdd("d", 10, #2023-01-02 03:04:05#)
' → 2023/01/12 3:04:05
例)1週間前を求める。
WScript.Echo DateAdd("ww", -1, #2023-01-02 03:04:05#)
' → 2022/12/26 3:04:05
計算結果が西暦100年よりも前になる場合はエラーが発生する。
エラーの内容は「Microsoft VBScript 実行時エラー: プロシージャの呼び出し、または引数が不正です。: ‘DateAdd’」
WScript.Echo DateAdd("yyyy", -1924, #2023-01-02 03:04:05#)
' → 西暦99年になるのでエラー
計算後の日付が存在しない日付であってもエラーにはならない。
自動で補正される。
試してみた限り、直前の存在する日付に補正されるよう。
例)2022年8月31日の1ヶ月後は、2022年9月30日となる。
WScript.Echo DateAdd("m", 1, #2022-08-31#)
' → 2022/09/30
例)2022年8月31日の2ヶ月前は、2022年6月30日となる。
WScript.Echo DateAdd("m", -2, #2022-08-31#)
' → 2022/06/30
例)2022年8月31日の6ヶ月前は、2022年2月28日となる。
WScript.Echo DateAdd("m", -6, #2022-08-31#)
' → 2022/02/28
日付と日付の間隔を求める
DateDiff 関数は日付と日付の間隔を返す。
DateDiff( Interval, Date1, Date2, [FirstDayOfWeek = vbSunday], [FirstWeekOfYear = vbFirstJan1] )
Interval
に間隔を計算するための時間単位を表す文字列を指定する。
値 | 内容 |
---|---|
yyyy |
年 |
q |
四半期 |
m |
月 |
y |
年間通算日 |
d |
日 |
w |
週日 |
ww |
週 |
h |
時 |
n |
分 |
s |
秒 |
Date1
と Date2
に日付を指定する。Date1
が基準となる。
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 週として扱う。 |
例)日数を求める。
WScript.Echo DateDiff("d", #2022-08-01#, #2022-07-31#)
' → -1
WScript.Echo DateDiff("d", #2022-08-01#, #2022-08-01#)
' → 0
WScript.Echo DateDiff("d", #2022-07-31#, #2022-08-01#)
' → 1
アカウントを作成 して、もっと沢山の記事を読みませんか?
この記事が気に入ったら ことりと さんを応援しませんか?
メッセージを添えてチップを送ることができます。
この記事にコメントをしてみませんか?