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

如何判断Python的datetime对象now是否处于同一周周五17点至周日17点?

简便判断datetime对象是否处于周五17:00至周日17:00之间

你之前的代码逻辑错在把两个矛盾的条件用and连接了——它要求时间同时满足“周五17点后”和“周日17点前”,但实际上我们需要的是分场景判断:周五17点及之后、周六全天、周日17点及之前这三个情况中的任意一种。

下面是几种简便的实现方式:

方式一:分分支直观判断

import datetime

now = datetime.datetime.now()
weekday = now.isoweekday()  # 1代表周一,7代表周日
target_time = datetime.time(17, 0)

is_in_target_window = False
if weekday == 5:
    # 周五:时间>=17:00就算符合
    is_in_target_window = now.time() >= target_time
elif weekday == 6:
    # 周六:全天都符合
    is_in_target_window = True
elif weekday == 7:
    # 周日:时间<=17:00就算符合
    is_in_target_window = now.time() <= target_time

print(is_in_target_window)

方式二:简化为一行逻辑表达式

把分支逻辑合并成一个表达式,代码更紧凑:

import datetime

now = datetime.datetime.now()
weekday = now.isoweekday()
target_time = datetime.time(17, 0)

is_in_target_window = (weekday == 5 and now.time() >= target_time) or \
                      (weekday == 6) or \
                      (weekday == 7 and now.time() <= target_time)

print(is_in_target_window)

方式三:时间区间直接比较

如果不想分星期判断,可以先算出本周周五17点和周日17点的具体datetime对象,再直接判断now是否在这个区间内:

import datetime

now = datetime.datetime.now()
# 先找到本周一的日期
monday = now - datetime.timedelta(days=now.isoweekday() - 1)
# 推导周五17:00的时间
friday_17 = monday + datetime.timedelta(days=4, hours=17)
# 推导周日17:00的时间
sunday_17 = friday_17 + datetime.timedelta(days=2)

# 直接判断now是否在[周五17:00, 周日17:00]区间内
is_in_target_window = friday_17 <= now <= sunday_17
print(is_in_target_window)

这个方法的好处是逻辑更直观,不需要处理星期分支,但要注意如果涉及时区,需要确保所有时间都是同一时区的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:40:43