You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让while循环在02:20:00至21:49:59的时间区间内运行?

修正时间区间判断的布尔表达式

你的代码逻辑错误在于对时间区间的拆分逻辑,正确的判断需要分别处理小时跨域和同小时内的分钟条件:

错误原因分析

  • 原起始条件now.hour >= 2 and now.minute >= 20:会错误排除3:00-3:19这类时间(小时符合但分钟不足20),但这些时间本应在区间内。
  • 原结束条件now.hour <= 21 and now.minute <= 49:会错误排除17:50这类时间(小时符合但分钟超过49),但这些时间本应在区间内。

正确的布尔表达式

要判断当前时间处于02:20:00到21:49:59之间,应该用以下逻辑:

(now.hour > 2 or (now.hour == 2 and now.minute >= 20)) and (now.hour < 21 or (now.hour == 21 and now.minute <= 49))
  • 起始判断:要么小时大于2(所有3点及以后的时间),要么小时等于2且分钟≥20(2点20分及之后的时间)
  • 结束判断:要么小时小于21(所有20点及以前的时间),要么小时等于21且分钟≤49(21点到21点49分的时间)

修正后的代码

另外建议在内层循环中加入短暂延迟,避免CPU占用过高:

import datetime
import time

while True:
    now = datetime.datetime.now()
    # 判断是否在目标时间区间内
    in_time_window = (now.hour > 2 or (now.hour == 2 and now.minute >= 20)) and (now.hour < 21 or (now.hour == 21 and now.minute <= 49))
    print(in_time_window)
    while in_time_window:
        # 这里可以加入你需要执行的逻辑
        now = datetime.datetime.now()
        in_time_window = (now.hour > 2 or (now.hour == 2 and now.minute >= 20)) and (now.hour < 21 or (now.hour == 21 and now.minute <= 49))
        time.sleep(1)  # 每秒更新一次时间,减少CPU消耗

内容的提问来源于stack exchange,提问作者Jakub Szurlej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:05:23