time.sleep
方法使脚本进入休眠状态,直到下一个小时开始我使用datetime
库整理了一个比较粗略的解决方案(为安全起见,请再加上两分钟)
import datetime
# Determine the seconds until the next hour (add 2 minutes to be safe)
now = datetime.datetime.now()
next_hour = datetime.datetime(now.year, now.month, now.day, now.hour + 1, 2)
sleep_seconds = (next_hour - now).seconds
# Put the execution to sleep for a while
print("Sleeping for {0} minutes...".format(sleep_seconds // 60))
time.sleep(sleep_seconds)
此脚本可以工作,但是在下一个小时是第二天的开始时不可靠。
datetime
期望小时值介于0..23
datetime.datetime.now()
个方法返回了23
该方法将失败
如果您将24
传递给datetime
对象有人可以提出一个更好的解决方案来解决这些环绕问题吗?
答案 0 :(得分:3)
在这种情况下,思考datetime.timedelta
将为您提供帮助。像这样:
import datetime
delta = datetime.timedelta(hours=1)
now = datetime.datetime.now()
next_hour = (now + delta).replace(microsecond=0, second=0, minute=2)
wait_seconds = (next_hour - now).seconds
replace
应该可以将您舍入到下一个小时。