【发布时间】:2020-06-25 15:40:28
【问题描述】:
我想在当前datetime 之前的n 小时前获得datetime,不包括从 16:30 到 8:00 的时间间隔。 p>
因此,如果当前的datetime 是datetime(2020, 06, 25, 14, 0),并且我想获得具有-5 小时增量的datetime,我只需像往常一样获得datetime(2020, 06, 25, 9, 0) 的datetime。但是,如果当前时间是 10:00,我希望返回的 datetime 是 datetime(2020, 06, 24, 13, 30)。所以它排除了时间间隔,并返回datetime,就好像时间间隔根本不存在一样。
我自己尝试过解决这个问题,但这是很糟糕的代码,而且并没有真正起作用。我需要帮助找到更好的解决方案。
now = datetime.now()
datetime_new = now - timedelta(hours=N_HOURS)
print(datetime_new)
if datetime_new.hour < 8:
prev_day = datetime(datetime_new.year,
datetime_new.month,
datetime_new.day - 1,
16, 30)
this_day = datetime(datetime_new.year,
datetime_new.month,
datetime_new.day,
8, 0)
diff2prev = datetime_new - prev_day
diff2next = this_day - datetime_new
total_diff = diff2prev + diff2next
datetime_new -= total_diff
elif datetime_new.hour > 16 and datetime_new.minute > 30:
this_day = datetime(datetime_new.year,
datetime_new.month,
datetime_new.day,
16, 30)
next_day = datetime(datetime_new.year,
datetime_new.month,
datetime_new.day + 1,
8, 0)
diff2prev = datetime_new - this_day
diff2next = next_day - datetime_new
total_diff = diff2prev + diff2next
datetime_new -= total_diff
【问题讨论】: