如果在2个小时之间,跨越午夜

时间:2015-04-30 09:12:43

标签: vbscript asp-classic

我试过在互联网上搜索这个,但我差不多了。

基本上,我有这个:

If Hour(Now()) >= 8 And Hour(Now()) < 17 then response.write("TEST")

这将显示上午8点到下午5点之间的TEST字样 - 但我希望它可以跨越午夜。

我希望能够说,如果时间是在晚上10点到凌晨4点之间,那就显示出来了。

我正在使用经典ASP - 是否有人可以帮助我 - 我疯了!

目前,我只是把声明放两次 - 就像这样;

If Hour(Now()) >= 22 And Hour(Now()) < 23 then response.write("TEST")
If Hour(Now()) >= 0 And Hour(Now()) < 4 then response.write("TEST")

这有效,但必须有一种方法可以做到这一点,而不必做2 if语句?

2 个答案:

答案 0 :(得分:2)

您可以尝试使用

Dim h
    h = Hour(Now())
    If h >= 22 Or h < 4 Then Response.Write("Test")

或者

If Hour(DateAdd("h", 2, Now)) < 6 Then Response.Write("test")

或者

Select Case Hour(Now())
    Case 22,23,0,1,2,3 : Response.Write("test")
End Select

已修改以适应评论

Option Explicit

WScript.Echo CStr(InTime("02:00", "18:00"))
WScript.Echo CStr(InTime("18:00", "22:00"))
WScript.Echo CStr(InTime("15:00", "04:00"))

Function InTime(ByVal startTime, ByVal endTime)
Dim thisTime
    thisTime  = CDate(FormatDateTime(Now(), vbShortTime))
    startTime = CDate(startTime)
    endTime   = CDate(endTime)
    If endTime < startTime Then endTime = DateAdd("h", 24, endTime)
    InTime = ( thisTime >= startTime And thisTime <= endTime )
End Function

答案 1 :(得分:0)

好的 - 所以我必须编写自己的函数:

function timeLimit(startTime, endTime)
    h=hour(now())
    if startTime>endTime then
        if h>=startTime or h<=endTime then
            timeLimit=True
        else
            timeLimit=False
        end if
    elseif startTime<endTime then
        if h>=startTime and h<=endTime then
            timeLimit=True
        else
            timeLimit=False
        end if
    else
        if h=startTime then
            timeLimit=True
        else
            timeLimit=False
        end if
    end if
end function

如果开始时间编号大于结束时间编号,则可以解决此问题 - 如果是,则必须跨越午夜。然后它会相应地行动 - 返回真或假,取决于输入。

所以,如果我想显示单词&#34; Hello World&#34;在晚上8点到下午2点之间,我会用这个:

if timeLimit(20, 14) then Response.Write "Hello World"

如果我想展示&#34; Hello World&#34;在上午8点到下午5点之间,我会用这个:

if timeLimit(8, 17) then Response.Write "Hello World"

如果我只想展示&#34; Hello World&#34;下午4点,我会用这个:

if timeLimit(16, 16) then Response.Write "Hello World"

我希望将来帮助某人。