日付を個々の構成要素に分解する関数
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub Sample8_2_1() Dim dt As Date dt = Now Debug.Print "Year :" & Year(dt) Debug.Print "Month :" & Month(dt) Debug.Print "Day :" & Day(dt) Debug.Print "Hour :" & Hour(dt) Debug.Print "Minute :" & Minute(dt) Debug.Print "Second :" & Second(dt) End Sub |
実行結果
- YEAR関数:年を表す1900 ~ 9999の整数を返します。
- Month関数:月を表す1 ~ 12の整数を返します。
- DAY関数:日付を表す1 ~ 31の整数を返します。
- Hour関数:時間を表す0 ~ 23の整数を返します。
- Minute関数:分を表す0 ~ 59の整数を返します。
- Second関数:秒を表す0 ~ 59の整数を返します。
DatePart関数を使う
DatePart関数を使い、指定した部分を取得することができます。
第1パラメーターの設定値により取得する部分を指定します。
取得対象 | 設定値 |
---|---|
年 | yyyy |
月 | m |
日 | d |
時 | h |
分 | n |
秒 | s |
四半期 | q |
通日(一年の何日目か) | y |
曜日番号 | w |
週 | ww |
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Sample8_2_2() Dim dt As Date dt = Now Debug.Print "yyyy:" & DatePart("yyyy", dt) ' 年 Debug.Print "m :" & DatePart("m", dt) ' 月 Debug.Print "d :" & DatePart("d", dt) ' 日 Debug.Print "h :" & DatePart("h", dt) ' 時 Debug.Print "n :" & DatePart("n", dt) ' 分 Debug.Print "s :" & DatePart("s", dt) ' 秒 Debug.Print "q :" & DatePart("q", dt) ' 四半期 Debug.Print "y :" & DatePart("y", dt) ' 通日 End Sub |
実行結果
曜日番号の取得
週の最初の曜日を指定することができます。指定しない場合は日曜日が最初の曜日なります。定数 | 値 | 説明 |
---|---|---|
vbSunday | 1 | 日曜日(既定) |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
vbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
2010年8月1日を例にしてみます。
2010年8月1日は日曜日ですが、週の最初の曜日を日曜日とするか、月曜日とするかで戻り値が異なります。
実行プログラム
1 2 3 4 5 6 7 8 9 |
Sub Sample8_2_3() Dim dt As Date dt = DateSerial(2010, 8, 1) Debug.Print "w(vbSunday):" & DatePart("w", dt) ' 指定しないと日曜日が最初の日 Debug.Print "w(vbMonday):" & DatePart("w", dt, vbMonday) ' 最初の日を月曜日に指定 End Sub |
実行結果
第何週かを取得する
第1週の決め方は以下の3パターンがあります。
定数 | 値 | 説明 |
---|---|---|
vbFirstJan1 | 1 | 1月1日が含まれる週を第1週目とする。 |
vbFirstFourDays | 2 | 初めて4日間以上になる週を第1週目とする。 |
vbFirstFullWeek | 3 | 初めて7日間そろう完全な週を第1週目とする。 |
2014年1月と2015年1月を例にしてみます。
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub Sample8_2_4() Dim dt As Date dt = DateSerial(2015, 1, 5) Debug.Print "ww(vbFirstJan1) :" & DatePart("ww", dt, vbSunday, vbFirstJan1) ' 1月1日が含まれる週が第1週目 Debug.Print "ww(vbFirstFourDays):" & DatePart("ww", dt, vbSunday, vbFirstFourDays) ' 4日以上の週を第1週目 dt = DateSerial(2014, 1, 5) Debug.Print "ww(vbFirstFourDays):" & DatePart("ww", dt, vbSunday, vbFirstFourDays) ' 4日以上の週を第1週目 Debug.Print "ww(vbFirstFullWeek):" & DatePart("ww", dt, vbSunday, vbFirstFullWeek) ' 完全な週を第1週目 End Sub |
実行結果
- vbFirstJan1:1月1日が含まれる週が第1週目となります。
よって2015年1月5日は第2週となります。 - vbFirstFourDays:4日未満の週は第1週目となりません。
2015年1月5日は第1週となります。 - vbFirstFullWeek:7日間そろう完全な週が第1週目となります。
よって2014年1月5日は第1週となります。
2014年1月5日は第2週となります。