Используйте функцию Time()
, чтобы получить текущее время и проверить литералы времени, или, если вам нужно использовать строки (например, получить конфигурацию откуда-то), вы можете использовать функцию CDate
, чтобы получить время
* 1004.*
отредактировано для адаптации к комментариям
OP спросил, почему And
, а не Or
при проверке временного диапазона.В то время как рассматриваемый случай должен обрабатываться с помощью And
(текущее время должно быть больше, чем время начала And
ниже, чем время окончания), есть случай, когда необходимо использовать Or
: когдавременной диапазон для проверки начинается до полуночи и заканчивается через него.В этом случае условие изменяется
Option Explicit
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
' Check over midnight
If InTime( #20:30# , #10:05# ) 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()
If startTime <= endTime Then
' If startTime <= endTime both are in same day
' current time should be
' greater than startTime
' AND lower than endTime
'
' >----------------------------<
' 0.1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.
'
InTime = CBool( ( currentTime >= startTime ) And ( currentTime <= endTime ) )
Else
' startTime > endTime when both times don't belong to same day
' current time should be
' greater than start time (towards midnight)
' OR lower than end time (backwards to midnight)
'
' >---------|--------------------<
' 13.14.15.16.17.18.19.20.21.22.23.0.1.2.3.4.5.6.7.8.9.10.11.12.
'
' ----------------------< >---------
' 0.1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.
'
InTime = CBool( ( currentTime >= startTime ) Or ( currentTime <= endTime ) )
End If
End Function