IsDate验证格式错误

时间:2014-07-03 04:41:19

标签: asp-classic

我有这些行

SetLocale(3081)
Response.Write "<p>TEST: " & Date() & " | " & isDate("3/22/2014") & " --> " & GetLocale() & "</p>"

输出

  

测试:2014年3月3日|真 - &gt; 3081

现在纠正我,如果我错了,但一年只有12个月?,根据IsDate我已经通过的日期,这应该是错误的,因为我已经把22个月作为月份,尽管当地设置另有说法,但是有效。

我想验证日期是否是插入数据库的正确格式,如果它没有给出更友好的错误,&#34; 3/22/2014&#34;输出&#34;将数据类型varchar转换为日期时出错。&#34;当我尝试将其输入数据库时​​,因为它通过IsDate检查

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

是的,这确实是一个有效的日期。

为什么呢?因为VBScript是聪明/慷慨/愚蠢(选择你最喜欢的)足以将数字视为日期。 &#34; 3/22/2014&#34;可以解析为公式:3/22/2014 = 6.770786313983931e-5

现在取这个数字并转换为日期:

Dim myNumber, myDate
myNumber = 6.770786313983931e-5
myDate = CDate(myNumber)

变量myDate将是完全有效的日期,即12月30日 th 1899,00:00:06

所以底线:价值是一个日期,而不是你所期望的。你没有做错任何事,但要真正检查字符串是否有效,你必须自己检查,没有开箱即用的方法。