如何睡眠直到特定时间YYYY-MM-DD HH:MM:SS?

发布于 2021-01-29 14:59:44

我一直在想做一个睡眠功能,它会一直睡眠到某个日期为止。我的想法基于日期,例如:2019-01-20 12:00:00。

我还没有真正弄清楚如何开始解决这个问题。我的想法是类似的东西

if there is a date given:
   time.sleep(until the date and time)

所以问题是我怎么可能能够睡到2019-01-20 12:00:00所给定的某个时间?

关注者
0
被浏览
111
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    很简单,计算一下它有多长时间,然后休眠一下时间。

    您可以计算出达到唤醒时间并进入增量时间睡眠所需的时间。

    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')
    

    要么

    target = datetime.datetime.strptime('2019-1-20 20:00:00', '%Y-%m-%d %H:%M:%s')
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看