アップデート:
このisDate
チェックでは、2 桁の年を入力しても問題のない結果が返されるように思われるため、この関数を使用して有効な日付をチェックできます。
function checkDate(datestr)
dim temp, dt, d, m, y
checkDate = false
temp = split(datestr, ".")
if UBound(temp) = 2 then
d = CInt(temp(0))
m = CInt(temp(1))
y = CInt(temp(2))
if y<100 then
y = 2000 + y
end if
dt = DateSerial(y, m, d)
if day(dt)=d and month(dt)=m then
checkDate = true
end if
end if
end function
DateSerial 関数呼び出しと日と月のチェックが挿入され、30.02.2013 などの無効な日付が false を返すようにします。また、4 桁の年号入力もサポートしていますが、この関数では数百年後に Y3k 問題が発生することに注意してください。:)
@Elie が既に述べたように、 isDate は現在のロケール設定を使用します。ただし、必要な日付形式に合わせたいロケールを設定できます。
dim locale
' uses your current locale and will return false
Response.Write "<p>TEST: " & isDate("15.10.2013") & " --> " & GetLocale() & "</p>"
locale = GetLocale() ' save current locale
SetLocale(1031) ' de_AT
' uses de_AT locale and will return true
Response.Write "<p>TEST: " & isDate("15.10.2013") & " --> " & GetLocale() & "</p>"
SetLocale(locale) ' restore your locale
ロケール ID のリストについては、こちらを参照してください。