#author("2020-05-10T10:15:14+09:00;2015-03-20T22:50:40+09:00","","")
#navi(../)
* VBScriptで2つの日付の引き算(時間間隔)をする方法・DateDiff [#i5dec69f]
DateDiff関数を利用すると、引数に与えた2つの日付より時間間隔を求めることができます。~
以下にDateDiff関数を利用したサンプルコードと実行例を記します。~
(一部、WSHのヘルプファイルscript56.chmから抜粋)

#contents
#htmlinsertpcsp(win-top.html,win-sp.html)

* 関連記事 [#o1fb3363]
-[[年月日時分秒のパートを抜き出す・DatePart>WSH/年月日時分秒のパートを抜き出す・DatePart]]
-[[日付けの加算や減算を行う・DateAdd>WSH/日付けの加算や減算を行う・DateAdd]]
-[[指定した日付の曜日を取得する方法・WeekDay>WSH/指定した日付の曜日を取得する方法・WeekDay]]

* DateDiffの引数 [#k1d918f8]
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のサンプルコードおよび実行例 [#y86b3a05]
-サンプルコード~
DateDiffのサンプルコードを以下に記します。~
#ref(DateDiff.zip)
ファイル名: 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が返却されるので注意してください。~
いくつか動作確認をしてから使用することをおすすめします。

#htmlinsertpcsp(win-btm.html,win-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS