如何查看星期日 5:30PM 和星期五 5:30PM 之间的时间?

How to check it's between Sunday 5:30PM and Friday 5:30PM?

如何检查当前时间是否在周日 5:30 下午和周五 5:30 下午之间?

我可以单独找到日期和时间范围,但我认为时间必须与日期结合使用。

import datetime
import time

now = datetime.datetime.now()
if 0 <= now.weekday() <= 4:
    print ("It's a weekday!")
    if time(17, 30) <= now.time() <= time(17, 30):
        print "and it's in range"

您可以检查以下3个条件:

  1. 今天不是星期六
  2. 要么不是星期五,要么时间早于17:30
  3. 要么不是星期天,要么时间在17:30
  4. 之后

在代码中,这相当于:

from datetime import datetime, time

now = datetime.now()

if (now.weekday != 5
    and (now.weekday != 4 or now.time() <= time(17, 30)) 
    and (now.weekday != 6 or now.time() >= time(17, 30))):
        print("In range!")

您可以简单地获取 5:30pm 最近星期日的日期时间,然后检查它是否恰好在 5 天内:

import datetime

now = datetime.datetime.now()
last_sunday = next((now - i * datetime.timedelta(days=1)) for i in range(7) if (now - i * datetime.timedelta(days=1)).weekday() == 6)
last_sunday_at_530 = datetime.datetime(year=last_sunday.year, month=last_sunday.month, day=last_sunday.day, hour=17, minute=30)
if (now - last_sunday_at_530) < datetime.timedelta(days=5):
    print("now is between Sunday at 5:30pm and Friday at 5:30pm")
else:
    print("Now is after 5:30pm on Friday but before Sunday at 5:30pm

如果您想反向查看(周五之后但周日之前),那么您可以简单地从 last_friday 开始,仅向前计算两天。

一天中的哪个时间在范围内取决于日期:

  1. 周日,5:30 下午之后的时间。
  2. 周一到周四,时间不限。
  3. 星期五,5:30之前的时间。

这导致以下代码:

import datetime

now = datetime.datetime.now()
d = now.weekday()
t = now.time()

if (
    d == 6 and t >= datetime.time(17, 30)     # Sunday
    or 0 <= d <= 3                            # Monday–Thursday
    or d == 4 and t <= datetime.time(17, 30)  # Friday
):
    print("In range")