0

我的 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?

4

2 回答 2

2

更新:

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

于 2013-10-16T14:53:34.640 回答
0

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

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

于 2013-10-16T11:02:06.200 回答