很简单,计算一下有多久,然后睡觉的时间。
您可以计算到达唤醒时间和睡眠增量时间所需的时间。
Python可以按时间间隔进行计算。如果你从一个时间戳中减去另一个时间戳,那么你会得到一个datetime.timedelta
:
import datetime
import time
target = datetime.datetime(2019,1,20,12,0,0)
now = datetime.datetime.now()
delta = target - now
if delta > datetime.timedelta(0):
print('will sleep: %s' % delta)
time.sleep(delta.total_seconds())
print('just woke up')
当然,您可以将其放入函数中:
import datetime
import time
target = datetime.datetime(2019,1,20,12,0,0)
def sleep_until(target):
now = datetime.datetime.now()
delta = target - now
if delta > datetime.timedelta(0):
time.sleep(delta.total_seconds())
return True
sleep_until(target)
你可以检查返回值:只有当它休眠时,它才返回True。
顺便说一句:可以使用过去的日期作为目标。这将生成负数秒。睡眠负值将不会睡眠。
如果你的时间是一个字符串,请使用:
target = datetime.datetime.strptime('20.1.2019 20:00:00', '%d.%m.%Y %H:%M:%s')
or
target = datetime.datetime.strptime('2019-1-20 20:00:00', '%Y-%m-%d %H:%M:%s')