VBS时间范围,以小时和分钟为单位

时间:2019-01-30 09:10:49

标签: vbscript

我需要根据10:05 AM到20:30 PM之间的时间范围运行vbs脚本。这是我当前的代码:

If Hour(Now()) >= 10 OR hour(Now()) < 20 Then
   WScript.Echo "Time Range"

Else

   WScript.Echo "NOT Time Range"

End If

但是我正在努力处理分钟部分。 对我来说,查看VBS的Minute Function文档并不十分清楚。

1 个答案:

答案 0 :(得分:2)

使用Time()函数检索当前时间并检查时间文字,或者如果您需要使用字符串(例如,从某处检索配置),则可以使用CDate函数检索时间< / p>

Dim startTime, endTime

    ' Using time literals    
    If InTime( #10:05#, #20:30# ) Then 
        WScript.Echo "In time range"
    Else
        WScript.Echo "NOT in time range"
    End If 

    ' Using strings
    If InTime( CDate("10:05") , CDate("20:30") ) Then 
        WScript.Echo "In time range"
    Else
        WScript.Echo "NOT in time range"
    End If 


' Logic moved to a function to avoid duplication in previous samples    
Function InTime( startTime, endTime )
Dim currentTime
    currentTime = Time()
    InTime = CBool( ( currentTime >= startTime ) And ( currentTime <= endTime ) )
End Function

已编辑以适应评论

OP在检查时间范围时问为什么And而不是Or。虽然问题中的情况应以And处理(当前时间必须大于开始时间 And ,小于结束时间),但在某些情况下,{{1 }}必须使用:当检查的时间范围在午夜之前开始并在结束时通过。如果是这样,情况会改变

Or