目次へ戻ります
VB サンプル


VB 日付操作


【関数一覧】
●Now、Date、Time システム日時の取得
●Format指定した書式に変換
●DateDiff日時の時間間隔(差)を求める
●DateAdd日時の時間間隔(差)を加える
●DateSerial年、月、日をDate型(バリアント)へ変換
●DateValue日付文字列をDate型(バリアント)へ変換
●TimeValue時刻文字列をDate型(バリアント)へ変換
●CDate日時文字列をDate型へ変換
●IsDate日付や時刻として認識できるかチェック
●Year年を取得
●Month月を取得
●Day日を取得
●Hour時を取得
●Minute分を取得
●Second秒を取得
●Weekday曜日を取得
●Weekdayname 曜日を取得
【Q&A】
●月末(今月の末日)の日付を求めたいのですが
●3ヶ月前の1日(初日)の日付を求めたいのですが
●今月は何日まであるかを求めたいのですが
●Now、Date、Time 関数

【機能】システム日付を返します。

【書式】result = Now
【書式】result = Date
【書式】result = Time

【 例 】
result = Now → 2006/11/28 16:16:54
result = Date → 2006/11/28
result = Time → 16:16:54

※ 戻り値はバリアント型 (内部処理形式 Date の Variant)の値を返します。
●Format 関数

【機能】値を指定した書式に変換し、その文字列を返します。

【書式】result = Format ( 値 , 書式 )

書式意味
(:)時刻の区切り記号です。オペレーティング システムの国別情報の設定によっては、時刻の区切り記号として他の記号が使用されることがあります。時刻を時間、分、および秒で区切ることができます。変換後の時刻の区切り記号は、コントロール パネルの設定によって決まります。
(/)日付の区切り記号です。オペレーティング システムの国別情報の設定によっては、他の記号が使用されることがあります。日付を年、月、および日で区切ることができます。変換後の区切り記号は、コントロール パネルの設定によって決まります。
cddddd および t t t t t の書式で表した日付と時刻を、日付、時刻の順序で返します。指定された値に小数部がない場合は日付のみ、整数部がない場合は時刻のみを表す文字列を返します。
d日付を返します。1 桁の場合、先頭に 0 が付きません (1 〜 31)。
dd日付を返します。1 桁の場合、先頭に 0 が付きます (01 〜 31)。
ddd曜日を英語 (省略形) で返します (Sun 〜 Sat)。
aaa曜日を日本語 (省略形) で返します (日〜土)。
dddd曜日を英語で返します (Sunday 〜 Saturday)。
aaaa曜日を日本語で返します (日曜日〜土曜日)。
ddddd年、月、日を含む短い形式 (コントロール パネルで設定) で表した日付を返します。既定の短い日付形式は、m/d/yy です。
dddddd年、月、日を含む長い形式 (コントロール パネルで設定) で表した日付を返します。既定の長い日付形式は mmmm dd, yyyy です。
w曜日を表す数値を返します (日曜日が 1、土曜日が 7 となります)。
wwその日が一年のうちで何週目に当たるかを表す数値を返します (1 〜 54)。
m月を表す数値を返します。1 桁の場合、先頭に 0 が付きません (1 〜 12)。ただし、h や hh の直後に m を指定した場合、月ではなく分と解釈されます。
mm月を表す数値を返します。1 桁の場合、先頭に 0 が付きます (01 〜 12)。ただし、h や hh の直後に mm を指定した場合、月ではなく分と解釈されます。
mmm月の名前を英語 (省略形) の文字列に変換して返します (Jan 〜 Dec)。
mmmm月の名前を英語で返します (January 〜 December)。
q1 年のうちで何番目の四半期に当たるかを表す数値を返します (1 〜 4)。
g年号の頭文字を返します (M、T、S、H)。
gg年号の先頭の 1 文字を漢字で返します (明、大、昭、平)。
ggg年号を返します (明治、大正、昭和、平成)。
e年号に基づく和暦の年を返します。1 桁の場合、先頭に 0 が付きません。
ee年号に基づく和暦の年を 2 桁の数値を使って返します。1 桁の場合、先頭に 0 が付きます。
y1 年のうちで何日目に当たるかを数値で返します (1 〜 366)。
yy西暦の年を下 2 桁の数値で返します (00 〜 99)。
yyyy西暦の年を 4 桁の数値で返します (100 〜 9999)。
h時間を返します。1 桁の場合、先頭に 0 が付きません (0 〜 23)。
hh時間を返します。1 桁の場合、先頭に 0 が付きます (00 〜 23)。
n分を返します。1 桁の場合、先頭に 0 が付きません (0 〜 59)。
nn分を返します。1 桁の場合、先頭に 0 が付きます (00 〜 59)。
s秒を返します。1 桁の場合、先頭に 0 が付きません (0 〜 59)。
ss秒を返します。1 桁の場合、先頭に 0 が付きます (00 〜 59)。
t t t t tコントロール パネルで設定されている形式で時刻を返します。先頭に 0 を付けるオプションが選択されていて、時刻が午前または午後 10 時以前の場合、先頭に 0 が付きます。既定の形式は、h:mm:ss です。
AM/PM時刻が正午以前の場合は大文字で AM を返し、正午〜午後 11 時 59 分の間は大文字で PM を返します。
am/pm時刻が正午以前の場合は小文字で am を返し、正午〜午後 11 時 59 分の間は小文字で pm を返します。
A/P時刻が正午以前の場合は大文字で A を返し、正午〜午後 11 時 59 分の間は大文字で P を返します。
a/p時刻が正午以前の場合は小文字で a を返し、正午〜午後 11 時 59 分の間は小文字で p を返します。
AMPM"12 時間制" が選択されていて、時刻が正午以前の場合は午前を表すリテラル文字列を、正午〜午後 11 時 59 分の間は午後を表すリテラル文字列を返します。これらの文字列の設定および "12 時間制" の選択は、コントロール パネルで行います。AMPM は大文字、小文字のどちらでも指定できます。既定の形式は、AM/PM です。

【 例 】
result = Format( Now, "yyyy/mm/dd hh:nn:ss" ) → 2006/11/28 14:49:28
result = Format( Now, "ggge年mm月dd日(aaa)" ) → 平成18年11月28日(火)
●DateDiff 関数

【機能】日付の時間間隔(差)を返します。

【書式】result = DateDiff ( 時間単位の文字 , 日付1 , 日付2 )

時間単位の文字意味
yyyy
q四半期
m
y年間通算日
d
w週日
ww
h
n
s

【 例 】
result = DateDiff( "d", "2006/11/30 15:37:00", "2006/12/1 15:36:00" ) → 1
result = DateDiff( "h", "2006/11/29 15:37:00", "2006/12/1 15:36:00" ) → 48 (24*2)
result = DateDiff( "n", "2006/11/30 15:37:00", "2006/12/1 15:36:00" ) → 1439 (23*60+59)
result = DateDiff( "s", "2006/11/30 15:37:00", "2006/11/30 15:36:50" ) → -10
result = DateDiff( "yyyy", "2006/12/31", "2007/1/1" ) → 1

※ パラメータ「日付1」、「日付2」はバリアント型 (内部処理形式 Date の Variant) の値を指定します。
●DateAdd 関数

【機能】日付の時間間隔(差)を加えた日付を返します。

【書式】result = DateAdd ( 時間間隔の文字, 時間間隔の数, 日付 )

時間間隔の文字意味
yyyy
q四半期
m
y年間通算日
d
w週日
ww
h
n
s

【 例 】
result = DateAdd( "d", 4, "2006/11/28 15:37:00") → 2006/12/02 15:37:00
result = DateAdd( "h", 1, "2006/11/28 15:37:00") → 2006/11/28 16:37:00
result = DateAdd( "n", -1, "2006/11/28 15:37:00") → 2006/11/28 15:36:00

※ 戻り値はバリアント型 (内部処理形式 String の Variant) の値を返します。
●DateSerial 関数

【機能】指定した年、月、日に対応するDate型(バリアント)の値を返します。

【書式】result = DateSerial ( 年, 月, 日 )

0 〜 29 の場合は 2000 〜 2029、30 〜 99 の場合は 1930 〜 1999 に変換されます。
1 〜 12 以外の値の場合、例えば、13を指定した場合は、1年繰りあがって、1月になります。
1 〜 28/29/30/31 以外の値の場合、例えば、月が6で、日に32を指定した場合は、1月繰りあがって 7月2日になります。

【 例 】
result = DateSerial(2007, 6, 32) → 2007/07/02
result = DateSerial(2007, 6, 0) → 2007/05/31

※ 戻り値はバリアント型 (内部処理形式 Date の Variant) の値を返します。
●DateValue、TimeValue、CDate 関数

【機能】日付(時刻)文字列をDate型(バリアント)へ変換します。

【書式】result = DateValue ( 日付文字列 )
【書式】result = TimeValue ( 時間文字列 )
【書式】result = CDate ( 日付文字列 )

【 例 】
result = DateValue( Now ) → 2006/11/28
result = DateValue( "2006年11月28日" ) → 2006/11/28
result = DateValue( "06年11月28日" ) → 2006/11/28
result = DateValue( "平成18年11月28日" ) → 2006/11/28
result = DateValue( "28-11-2006" ) → 2006/11/28
result = DateValue( "2006年11月28日 13時4分" ) → 2006/11/28
result = TimeValue( Now ) → 16:44:49
result = TimeValue( "13時4分" ) → 13:04:00
result = TimeValue( "午後1時4分" ) → 13:04:00
result = TimeValue( "1:4 PM" ) → 13:04:00
result = TimeValue( "2006年11月28日 13時4分" ) → 13:04:00
result = CDate( "2006年11月28日 13時4分" ) → 2006/11/28 13:04:00
result = CDate( "" ) → エラー:型が一致しません。
result = CDate( Null ) → エラー:Null の使い方が不正です。

※ DateValue、TimeValue の戻り値は、バリアント型 (内部処理形式 Date の Variant)の値を返します。
※ CDate の戻り値は、日付型の値を返します。
※ 不正な日付書式を指定するとエラーが発生します。
●IsDate 関数

【機能】指定した式が日付である場合、またはその式が有効な日付として認識できる場合は、真 (True) を返します。変換できない場合は、偽 (False) を返します。

【書式】result = IsDate ( 日付文字列 )

【 例 】
result = IsDate( "2006/11/30 11:01" )  →   True
result = IsDate( "2006/11/30" )  →   True
result = IsDate( "11:01" )  →   True
result = IsDate( "2006年11月30日" )  →   True
result = IsDate( "20061130" )  →   False
result = IsDate( "" )  →   False
result = IsDate( Null )  →   False
●Year、Month、Day、Hour、Minute、Second、Weekday、Weekdayname 関数

【機能】年月日時分秒曜日を返します。

【書式】result = Year(日付)
【書式】result = Month(日付)
【書式】result = Day(日付)
【書式】result = Weekday(日付)
【書式】result = Weekdayname(曜日コード, "曜日"を付けるどうか)
【書式】result = Hour(時刻)
【書式】result = Minute(時刻)
【書式】result = Second(時刻)

【 例 】
result = Now → 2006/11/28 17:14:12
result = Year( Now ) → 2006
result = Month( Now ) → 11
result = Day( Now ) → 28
result = Weekday( Now ) → 3 (1:日、2:月、3:火・・・)
result = Weekdayname(Weekday(Now)) → 火曜日
result = Weekdayname(Weekday(Now),True) → 火
result = Hour( Now ) → 17
result = Minute( Now ) → 14
result = Second( Now ) → 12

※ 戻り値はバリアント型 (内部処理形式 Integer の Variant)です (Weekdaynameは文字列)。
●月末(今月の末日)の日付を求める

【Q】当月の末日の日付を求めたいのですが。
【A】DateSerialを使いました。

【 例 】
Dim wkDate   '今日の日付
Dim result   '今月の月末
wkDate = Now '今を退避
result = DateSerial(Year(wkDate), Month(wkDate) + 1, 0) '月末を求める

【 結果 】
wkDate = 2007/06/22 13:55:30
result = 2007/06/30

【 解説 】
今日の日付から、年、月を抽出して、DateSerial にて月末を作成します。
このとき、月に1を足して、日を1日から1を引いた 0をセットする。
つまり、来月の1日(初日)から1日引いて、DateSerialに今月の月末を計算させる。
DateSerial(2007,7,0) → 2007/6/30 (DateSerial参照)
●3ヶ月前の1日(初日)の日付を求める

【Q】今日が 2007/06/28 だとして、3ヶ月前の初日の日付 (2007/03/01) を求めたいのですが。
【A】DateSerialを使いました。

【 例 】
Dim wkDate   '今日の日付
Dim result   '3ヶ月前の日付
wkDate = Now '今を退避
result = DateSerial(Year(wkDate), Month(wkDate) -3, 1) '3ヶ月前の日付(初日)を求める

【 結果 】
wkDate = 2007/06/28 13:55:30
result = 2007/03/01

【 解説 】
今日の日付から、年、月を抽出して、DateSerial にて求めたい日付を作成します。
例では、3ヶ月前の月と、日は1日(初日)にしたいので、月を3引いて、日は1を直接指定します。
月が1月で3を引いた場合は、DateSerialは年月で繰り下げてくれます。
DateSerial(2007,1-3,1) → 2006/10/01 (DateSerial参照)
●今月の日数を求める

【Q】今月が何日まであるかを求めたいのですが。
【A】DateSerialを使いました。

【 例 】
Dim wkNow    '今日の日付
Dim wkDate   '今月の月末
Dim wkDay    '今月の日数
wkNow = Now '今を退避
wkDate = DateSerial(Year(wkNow), Month(wkNow) + 1, 0) '月末を求める
wkDay = Day(wkDate) '日数を抽出

【 結果 】
wkNow = 2007/07/10 17:20:49
wkDate = 2007/07/31
wkDay = 31

【 解説 】
今日の日付から、年、月を抽出して、DateSerial にて月末を作成します。
このとき、月に1を足して、日を1日から1を引いた 0をセットする。
つまり、来月の1日(初日)から1日引いて、DateSerialに今月の月末を計算させる。
DateSerial(2007,8,0) → 2007/7/31 (DateSerial参照)
あとはDay()関数で「日」をとりだすだけ。

目次へ戻ります