ASP经典IsDate返回错误的结果

时间:2013-10-16 10:55:44

标签: iis asp-classic

我的IIS配置可能有问题。 Windows Server 2012 Foundation IIS 8 本地系统捷克语,日期格式dd.mm.rr ASP经典

IsDAte("18-10-13") - TRUE
IsDAte("18#10#13") - TRUE
IsDAte("18.10.13") - FALSE
IsDAte("18.10.2013") - TRUE

我需要IsDAte(18.10.13)返回true。 为什么现在IsDAte(18.10.13)会返回false?

2 个答案:

答案 0 :(得分:1)

<强>更新

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列表here

答案 1 :(得分:0)

IsDate函数使用本地设置来确定字符串是否可以转换为日期。 更多信息here

我认为Windows Server 2012上的日期设置不提供“DD.MM.YY”选项。