VB6 リファレンス お品書き へ戻ります
Visual Basic6 リファレンス


VB6 日付操作
日付表記の編集、型変換、日付/時刻の取得/編集/計算など、日付に関する操作

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


● 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】
【A】
今日が 2007/06/28 だとして、3ヶ月前の初日の日付 (2007/03/01) を求めたいのですが。
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()関数で「日」をとりだすだけ。


● 今年が閏年かどうか判断する
【Q】
【A】
今年が閏年かどうか判断したいのですが。
DateSerialを使いました。
【 例 】 Dim wkNow     '今日の日付
Dim wkDate    '2月の月末
Dim wkDay     '2月の日数
wkNow = Now '今を退避
wkDate = DateSerial(Year(wkNow), 3, 0) '2月の末日を求める
wkDay = Day(wkDate) '日数を抽出
【 結果 】 wkNow = 2007/07/10 17:20:49
wkDate = 2007/02/28
wkDay = 28
【 解説 】 DateSerial(2007,3,0) → 2007/2/28 (DateSerial参照)
wkDay が 29 なら、うるう年。


● 月別 日数 早見表

1月2月3月4月5月6月7月8月9月10月11月12月
312831303130313130313031