如何在VBS脚本中实现含分钟的10:05-20:30时间范围判断?
解决VBS脚本判断时间范围(含分钟)的问题
你的原代码不仅没处理分钟边界,逻辑上还存在错误——Hour(Now()) >=10 OR Hour(Now()) <20这个条件永远为真,毕竟任何小时数要么≥10要么<20,导致脚本永远输出"Time Range",完全没达到你要的精准判断效果。
要准确识别当前时间是否处于10:05到20:30之间,我们需要分三种场景覆盖所有符合条件的情况:
- 当小时在11到19之间时,直接判定为在范围内;
- 当小时是10时,需要分钟数≥5;
- 当小时是20时,需要分钟数≤30;
- 其余情况都不属于目标时间范围。
下面是修正后的完整代码:
Dim currentHour, currentMinute currentHour = Hour(Now()) currentMinute = Minute(Now()) If (currentHour > 10 And currentHour < 20) _ Or (currentHour = 10 And currentMinute >= 5) _ Or (currentHour = 20 And currentMinute <= 30) Then WScript.Echo "Time Range" Else WScript.Echo "NOT Time Range" End If
代码细节解释:
- 先把当前小时和分钟存入变量,避免重复调用
Hour(Now())和Minute(Now()),让代码更简洁易读; - 下划线
_是VBS的续行符,用来拆分过长的条件语句,提升可读性; - 三个
OR连接的条件完整覆盖了所有符合要求的时间区间:currentHour >10 And currentHour <20:覆盖11:00到19:59的所有时间;currentHour=10 And currentMinute>=5:精准匹配10:05到10:59的时间段;currentHour=20 And currentMinute<=30:匹配20:00到20:30的时间段。
这样就能精准判断时间是否在你设定的范围内了!
内容的提问来源于stack exchange,提问作者edwio




