(for Internet Explorer)
← ▼ ▲
↑
四捨五入、切り下げ、切り上げ
切り下げ （マイナスのとき、小数があると大きい値へ。 C99互換）
切り下げ （マイナスのとき、小数があると小さい値へ）
Int(1.9) = 1
Int(-1.9) = -2
→ 負の割り算、余り、% 演算子
Fix(1.9) = 1
Fix(-1.9) = -1
四捨五入（偶数丸め）
→ 偶数丸め、銀行式丸めの四捨五入
四捨五入（R丸め、0.5以上なら切り上げ）
Int( 1.4 + 0.5 ) = 1
Int( 1.5 + 0.5 ) = 2
Int( 1.6 + 0.5 ) = 2
Int( 2.4 + 0.5 ) = 2
Int( 2.5 + 0.5 ) = 3
Int( 2.6 + 0.5 ) = 3
Fix 関数を使う。
Int 関数を使う。
CInt( 1.4 ) = 1
CInt( 1.5 ) = 2
CInt( 1.6 ) = 2
CInt( 2.4 ) = 2
CInt( 2.5 ) = 2 ***
CInt( 2.6 ) = 3
CInt 関数を使う。
CInt( -1.4 ) = -1
CInt( -1.5 ) = -2
CInt( -1.6 ) = -2
CInt( -2.4 ) = -2
CInt( -2.5 ) = -2 ***
CInt( -2.6 ) = -3
Int( -1.4 + 0.5 ) = -1
Int( -1.5 + 0.5 ) = -1
Int( -1.6 + 0.5 ) = -2
Int( -2.4 + 0.5 ) = -2
Int( -2.5 + 0.5 ) = -2
Int( -2.6 + 0.5 ) = -3
+0.5 してから Int 関数を使う。
Fix( -1.4 + 0.5 ) = 0
Fix( -1.5 + 0.5 ) = -1
Fix( -1.6 + 0.5 ) = -1
Fix( -2.4 + 0.5 ) = -1
Fix( -2.5 + 0.5 ) = -2
Fix( -2.6 + 0.5 ) = -2
（メモ） Fix 関数を使うと、誤差が大きい。
切り上げ
-Int( -(1.1) ) = 2
-Int( -(-1.1) ) = -1
マイナスして Int 関数を使い、マイナスする。
← ▼ ▲
日付、時間、性能計測
CDate 関数
Sub main()
Dim folder, fnames()
Dim fname, f
Dim key_date
key_date = CDate( "2008/06/16" )
ExpandWildcard "sub\*", F_File Or F_SubFolder, folder, fnames
For Each fname in fnames
Set f = g_fs.GetFile( folder + "\" + fname )
If f.DateLastModified > key_date Then echo f.Path & " - " & f.DateLastModified
Next
End Sub
日付の比較
年月日時分秒の文字列を Date 型に変換します
Date 型
日付の各位（年月日時分秒）
Now 関数
現在の年月日時分秒を返します
Date 型の扱いの基本
日付の計算
ミリ秒単位の計測
Timer 関数
FormatDateTime 関数
Win32_TimeZone
タイムゾーン
Date型を文字列に変換します
関連
サンプル
→ File::DateLastModified - タイムスタンプ
← ▼ ▲
Date 型
文字列型に変換すると、地域に合わせたフォーマットの文字列を返します。
日本：
2008/06/11 14:28:01
文字列型への変換
→ CDate 関数
文字列型から Date クラスへの変換
代入は Set 不要
Date 型はクラスではないので、Set d = CDate(...) のような Set は不要です。
[ 親: 日付 ]
参考
→ 日付の各位（年月日時分秒）
→ 日付の比較
→ 日付の計算
2008/06/11
= CStr( Date() )
= CStr( Now() )
= CStr( Time() )
14:28:01
t = CDate( "2008/06/16" )
→ CDate 関数
VB(Web)
西暦 100年 1月 1日〜 9999年 12月31日まで表せます。
Date 型の値のタイムゾーンは、その定義によります。
a = CDate("12:00") のとき、a がローカル・タイムゾーンの日時を格納するという定義であったら、
ローカル・タイムゾーンでの 12:00 になり、
b = CDate("3:00") のとき、b が UTC の日時を格納するという定義であったら、
UTC での 3:00 になります。
Date 型の値に、タイムゾーンの定義を追加したら、世界共通の絶対的な時刻になります。
Date 型のタイムゾーン
→ 世界共通にするときは注意
← ▼ ▲
Now 関数
(Web)
Function Now() as Date
現在の年月日時分秒を返します。
OSに設定している地域＝「日本」なら、CStr( Now() ) は次のようになります。
2007/08/10 12:26:21
→ 日付の比較
→ Date 関数
→ Time 関数
→ Timer 関数
WScript.Echo "Now = " & Now()
Date
関連
サンプル
→ TestableNow (vbslib)
← ▼ ▲
Date 関数
Function Date() as Date
現在の年月日を返します。
OSに設定している地域＝「日本」なら、CStr( Date() ) は次のようになります。
2007/08/10
(Web)
[ 親: 日付 ]
時刻は、0:00:00 になります。
← ▼ ▲
Time 関数
Function Time() as Date
現在の時分秒を返します。
OSに設定している地域＝「日本」なら、CStr( Time() ) は次のようになります。
9:15:04
[ 親: 日付 ]
年月日は、1899年 12月 30日(土) になります。
← ▼ ▲
Timer 関数
Function Timer() as Single
今日の 0:00 から経過した時間を返します。（単位は秒、小数あり）
WScript.Echo Timer
サンプル：
出力例：
46529.59
(Web)
精度は、約16ミリ秒のようです。(WinXP)
Dim i, t0 : t0 = Timer
For i=1 To 1000
WScript.Echo i & " " & (Timer - t0) & "(sec)"
Next
計測スクリプト：
:
56 0(sec)
57 0(sec)
58 0(sec)
59 0.015625(sec)
60 0.015625(sec)
61 0.015625(sec)
:
出力例：
Dim t0, t1
t0 = Timer()
WScript.Sleep 30
t1 = Timer() - t0
WScript.Echo FormatNumber( t1, 3 ) & "(sec)"
サンプル： t0= から t1= の間の時間を表示する
0.031(sec)
出力例：
← ▼ ▲
CDate 関数
(Web)
Function CDate( Date as variant ) as Date
Date が文字列のときの例
CDate("July 1, 2008")
アメリカ：
CDate("2008/7/1")
日本：
年月日を Date 型に変換します。
[ 親: 日付 ]
CDate("2008/7/1 12:29")
時分秒が省略されると 0時、0分、0秒のように、各位の値が 0 になります。
年が省略されると、今年になります。
年月日が省略されると、1899年、12月、30日になります。
CDate("7/1 12:29")
2008/7/1 0:00:00
2008/7/1 12:29:00
(今年)/7/1 12:29:00
格納される値
CDate("12:29")
1899/12/30 12:29:00
#7/1 12:00# のように # で囲んだものは、リテラル日時です。
タイムゾーンは、その定義によります。
a = #12:00# のとき、a がローカル・タイムゾーンの日時を格納するという定義であったら、
ローカル・タイムゾーンでの 12:00 になり、
b = #3:00# のとき、b が UTC の日時を格納するという定義であったら、
UTC での 3:00 になります。
CDate("7/1")
(今年)/7/1 0:00:00
世界共通にするときは注意
日付リテラルや時刻リテラルか、DateSerial を使用してください。
← ▼ ▲
DateSerial
(Web)
Function DateSerial( Year as integer, Month as integer, Day as integer ) as Date
年月日から Date 型を返します。
← ▼ ▲
FormatDateTime
(Web)
Function FormatDateTime( aDateTime as Date [, NamedFormat as integer] ) as string
Date型を文字列に変換します。
vbGeneralDate
地域の日付か時刻、または両方を表示します。 CStr と同じです。
（デフォルト）
vbLongDate
vbLongTime
vbShortDate
vbShortTime
地域の日付（長い形式）
地域の日付（短い形式）
24 時間形式
地域の時刻
NamedFormat 引数
12:41
12:41:25
2010/12/03
2010年12月3日
2010/12/03 12:41:25
← ▼ ▲
GetLocale
(Web)
Function GetLocale() as integer
現在の地域を表す番号を返します。
← ▼ ▲
日付の各位（年月日時分秒）
(Web)
Function Month( d as Date ) as integer
Function Day( d as Date ) as integer
Day("October 19, 1962") = 19
月
日
(Web)
Function Hour( d as Date ) as integer
Function Minute( d as Date ) as integer
Function Second( d as Date ) as integer
Function Weekday( d as Date ) as integer
Function Year( d as Date ) as integer
vbSunday
1
vbMonday
vbSaturday
vbTuesday
vbWednesday
vbThursday
vbFriday
2
3
4
5
6
7
Weekday の定数
integer
曜
年
(Web)
時
分
11月なら 11
秒
0〜23
(Web)
Function WeekdayName( w as integer ) as string
w as integer
(Year, Month, Day, Weekday, WeekdayName, Hour, Minute, Second)
Function MonthName( Month as integer [, IsAbbreviate as boolean ] ) as string
(Web)
1=日、2=月、…、7=土
← ▼ ▲
日付の比較
If Now() >= CDate("2008/7/1 13:30") Then
'// 2008/7/1 13:30 以後なら
End If
比較するときは、Date 型同士を比較してください。
[ 親: 日付 ]
年が省略されると、今年になります。
時分秒が省略されると 0時、0分、0秒になります。
その日の終わりと比較するときは、その日ではなく次の日にするか、
時分（23:59:59） も指定してください。
Time 関数
年月日が省略されると、0年、0月、0日になります。
現在の時刻と比較するときは、現在の時刻を
で取得してください。
7/1
7/2
サンプル： 7/1が〆切のときに、〆切前かどうか
If Now() <= CDate("7/1 23:59:59") Then
If Now() < CDate("7/2") Then
← 厳密には１秒異なるが十分
サンプル： 昼休みかどうか
If Time() >= CDate("12:00") and Time() < CDate("13:00") Then
7/2
7/1
12:00
13:00
13:00
12:00
ただし、等しいかどうかの判定は、浮動小数型のように誤差を考慮してください。
If Abs(DateDiff("s", Now(), CDate("2008/7/1 13:30") )) < 1 Then
'// 現在が 2008/7/1 13:30 丁度なら
End If
← ▼ ▲
日付の計算
→ TimeSpan 構造体 (VB) (Web)
関連
→ DateAdd
→ DateDiff
[ 親: 日付 ]
VBScript では、時間の間隔を表す TimeSpan 型がありません。
時間の加算や減算を行う
２つ日付や時間の差を計算する
← ▼ ▲
DateAdd
Function DateAdd( Unit as string, Number as integer, Base as Date or string ) as Date
日付を加算または減算します。
【引数】
Unit
Number
単位をあらわす文字列
加算、または減算する値
(Web)
Base
加算、または減算される日付
計算結果の日付
返り値
サンプル：
Dim d : d = CDate("2008/7/1")
d = DateAdd( "m", +1, d )
Unit 引数
"yyyy"
年
月
日
時
分
秒
"m"
"d"
"h"
"n"
"s"
"ww"
週
(Web)
d = CDate("2008/8/1")
[ 親: 日付 ]
d = DateAdd( "n", +1, Now() )
今から 1分後
関連
→ DateAddStr (vbslib)
d = DateAdd( "d", +185-1, CDate("2010/1/1") )
年始から185日目 = "2010/07/04"
185
← ▼ ▲
DateDiff
Function DateDiff( Unit as string, DateB as Date or string, DateA as Date or string ) as Date
日付の差（DateA - DateB)を数値で返します。
【引数】
Unit
DateB
差の単位をあらわす文字列
日付、時刻 （通常、DateA より過去）
DateA
日付、時刻 （通常、DateB より未来）
日付や時刻の差。 正＝DateA が大きい（未来）、負＝DateB が大きい
返り値
Unit 引数
"yyyy"
年
月
日
時
分
秒
"m"
"d"
"h"
"n"
"s"
"ww"
週
(Web)
(Web)
サンプル：
Dim m : m = DateDiff( "m", "2008/7/1", "2009/8/1" )
m = 13 （ヶ月）
[ 親: 日付 ]
Dim d : d = DateDiff( "d", "2010/1/1", "2010/7/4" ) + 1
d = 185 （日目）年始から
7/4
参考
→ TimeSpan 構造体 - .NET Framework (Web)
← ▼ ▲
文字数を調べる
Len( s )
文字列
文字列を取り出す
Left( s, n ), Mid( s, i [, n] ), Right( s, n )
UCase, LCase, StrConv
変換、大文字小文字
文字コード
Asc, AscB, AscW, Chr, ChrB, ChrW
Trim, LTrim, RTrim
端の空白除去
検索、置換
InStr( [i,] s, key ), Replace( s, from, to )
InStrRev( s, key [,i] )
StrComp( a, b )
連続
String( n, s )
2バイト文字の1バイト目や2バイト目にかかることはありません。
全ての関数は、バイト数ではなく、文字数を扱います。
数値と文字列
InStr
a "b" c という文字列
"a ""b"" c"
vbCR+vbLF
改行文字など
→ 文字列操作 VBScript関数リファレンス (Web)
UCase
LCase
Left
Mid
→ 正規表現 (VBScript.RegExp)
InStrRev
Replace
vbCRLF
vbTab
vbNewLine
vbNullChar
Join( array, delimiter )
Join
→ VBScript の関数 (Web)
StrComp
比較
→ 配列、コレクション、文字列 (vbslib)
→ 型の変換
(Web)
バイナリ操作
LeftB, MidB, RightB, LenB, AscB, ChrB
Asc
関連
→ Dictionary クラス （ハッシュ、Scripting.Dictionary）
→ 正規表現 (VBScript.RegExp)
" 文字は、"" に置き換えてください。
→ C# の文字列
← ▼ ▲
+, & 演算子
文字列 + 文字列 ＝ 連結した文字列
文字列 & 文字列 ＝ 連結した文字列
文字列 + 数値 ＝ 「型が一致しません」
文字列 & 数値 ＝ 連結した文字列
文字列 + Nothing ＝ 「オブジェクト型の変数は設定されていません」
文字列 & Nothing ＝ 「オブジェクト型の変数は設定されていません」
文字列 + Null ＝ 代入可能だが echo すると「型が一致しません」
文字列 & Null ＝ 文字列
← ▼ ▲
CInt
Function CInt( s as string ) as integer
文字列や浮動小数を整数型に変換します。
s
"1"
返り値
1
"A"
（エラー）型が一致しません Err=13
"1+1"
（エラー）型が一致しません Err=13
2
"1.5"
1
"1.4"
[ 親: 文字列 ]
（エラー）オーバーフローしました。 Err=6
"32768"
"-32769"
（エラー）オーバーフローしました。 Err=6
→ 型の変換
関連
小数部は四捨五入します。
→ Int
小数部分を切り捨てる
→ Hex
オーバーフローしたときは、CLng を使ってください。
← ▼ ▲
Eval
Function Eval( s as string ) as integer
式が書かれた文字列を計算します。
返り値
s
"1"
1
"A"
Empty
"1+1"
2
[ 親: 文字列 ]
→ 別のスクリプトをインクルードする（Execute, ExecuteGlobal）
関連
→ CalculateVariables (vbslib)
サンプル
If IsNumeric( value ) Then value = Eval( value )
文字列へ変換する
→ CStr
→ FormatNumber
Visual Studio 2008 のデバッガーに接続して、本関数を連続実行すると時間がかかります。
← ▼ ▲
CStr
Function CStr( Input as variant ) as string
数値を文字列型に変換します。
Input
1
返り値
"1"
"1.4"
1.4
関連
→ FormatNumber
文字列を数値型に変換する
→ Eval
←
↓