怠日記

写真・金魚・昆虫・プログラミングの趣味を語るサイトです。似たようなことをnoteにも書いたり書いてなかったり。

VBScript - 日付を計算する | DateAdd関数

日付を計算するには 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