7-5.日時に関する関数

今回は、日時に関する関数をいくつか説明します。

日時の取得

Date関数:現在の日付を取得する

○構文
Date

○処理
現在の日付を取得します。

Time関数:現在の時刻を取得する

○構文
Time

○処理
現在の時刻を取得します。

Now関数:現在の日時を取得する

○構文
Now

○処理
現在の日時を取得します。

Sub 現在の日時を取得()
    
    MsgBox Date
    MsgBox Time
    MsgBox Now

  '2023/01/01
  '00:00:00
  '2023/01/01 00:00:00
End Sub

Year関数・Month関数・Day関数:年・月・日を取得する

○構文
Year(date)
Month(date)
Day(date)

○処理
dateに指定した日時型のデータから、年・月・日をそれぞれ取得します。
dateに指定したデータが日付型と認識されない場合、エラーとなります。

Sub 年月日を取得()

    MsgBox Year(Now)
    MsgBox Month(Now)
    MsgBox Day(Now)

    '2023
    '1
    '1
    
End Sub

Hour関数・Minute関数・Second関数:時・分・秒を取得する

○構文
Hour(date)
Minute(date)
Second(date)

○処理
dateに指定した日時型のデータから、時・分・秒をそれぞれ取得します。
dateに指定したデータが日付型と認識されない場合、エラーとなります。

Sub 時分秒を取得()

    MsgBox Hour(Now)
    MsgBox Minute(Now)
    MsgBox Second(Now)

    '0
    '0
    '0
    
End Sub

Timer関数:経過した秒数を取得する

○構文
Timer

○処理
0時0分0秒から経過した秒数を取得します。

処理開始時と処理終了時のTimer関数の戻り値を取得し、その差分を処理時間として算出できます。

Sub 処理時間の計測()

    Dim BeginTime As Long
    Dim EndTime As Long

    BeginTime = Timer
    EndTime = Timer
    
    MsgBox "処理時間は" & EndTime - BeginTime & "秒です"
    
End Sub

DatePart関数:年月日時分秒のいずれかを取得する

○構文
DatePart(interval,date,[firstdayofweek],[firstweekofyear])

○処理
dateに指定した日時型のデータから、intervalに指定した日時単位の値を取得します。
dateに指定したデータが日付型と認識されない場合、エラーとなります。

intervalに指定する単位は以下の通りです。

interval単位
yyyy
m
d
h
n
s
ww
w週日
q四半期
y年間通算日

firstdayofweekには、週の始まりの曜日を表す定数を指定します。省略すると日曜日が指定されます。

定数内容
vbUseSystem0NLS API設定
vbSunday1日曜日
vbMonday2月曜日
vbTuesday3火曜日
vbWednesday4水曜日
vbThursday5木曜日
vbFriday6金曜日
vbSaturday7土曜日

firstweekofyearには、年の第1週を表す定数を指定します。省略すると1月1日を含む週が指定されます。

定数内容
vbUseSystem0NLS API設定
vbFirstJan111月1日が含まれる週から開始
vbFirstFourDays2少なくも4日ある週から開始
vbFirstFullWeek37日ある週から開始
Sub DatePart関数()
    
    MsgBox DatePart("yyyy", Now)
    MsgBox DatePart("m", Now)
    MsgBox DatePart("d", Now)

    '2023
    '1
    '1
    
End Sub

Weekday関数:曜日を取得する

○構文
Weekday(date,[firstdayofweek])

○処理
dateの曜日を数値で返します。
戻り値と曜日の対応は下表の通りです。

戻り値曜日
1
2
3
4
5
6
7

firstdayofweekに指定する定数は、DatePart関数と同じです。

WeekdayName関数:曜日名を取得する

○構文
WeekdayName(weekday,abbreviate,[firstdayofweek])

○処理
weekdayに指定した数値を曜日名に変換して返します。
abbreviateにTrueを指定すると、省略した曜日名が取得されます。

firstdayofweekに指定する定数は、DatePart関数と同じです。

なお、Format関数で表示形式を”aaa”や”aaaa”にすることで曜日名を取得することもできます。

Sub 曜日を取得()

    MsgBox Weekday(Now)
    MsgBox WeekdayName(Weekday(Now))
    MsgBox WeekdayName(Weekday(Now), True)

    '1
    '日曜日
    '日
    
End Sub

日時の作成

DateSerial関数:日付データを作成する

○構文
DateSerial(year,month,day)

○処理
引数に指定したyear,month,dayを日付データとして返します。

TimeSerial関数:時刻データを作成する

○構文
TimeSerial(hour,minute,second)

○処理
引数に指定したhour,minute,secondを時刻データとして返します。

Sub 日時を作成()
    
    MsgBox DateSerial(2023, 1, 1)
    MsgBox TimeSerial(0, 0, 0)
    '2023/01/01
    '0:00:00
    
End Sub

日時の計算

DateAdd関数:日時の加減算

○構文
DateAdd(interval,number,date)

○処理
dateに対して、intervalで指定された単位で、numberの数値を加減算します。
numberが正の場合加算、負の場合減算された日時データが返ります。

DateDiff関数:日時の差分

○構文
DateDiff(interval,date1,date2)

○処理
date1とdate2の差分をintervalに指定された単位で算出します。

Sub 日時の計算()

    MsgBox DateAdd("d", 1, "2023/1/1")
    MsgBox DateAdd("d", -1, "2023/1/1")
    '2023/01/02
    '2022/12/31
    
    MsgBox DateDiff("d", "2023/1/1", "2022/12/31")
    '-1
    
End Sub

コメント