如何睡到特定时间 YYYY-MM-DD HH:MM:SS? [英] How to sleep until a specific time YYYY-MM-DD HH:MM:SS?

查看:35
本文介绍了如何睡到特定时间 YYYY-MM-DD HH:MM:SS?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在考虑做一个睡眠功能,它会一直睡到某个日期被调用.我的想法是基于日期,例如:2019-01-20 12:00:00.

I have been thinking to do a sleep function where it sleeps until a certain date is called. My idea was based of date such as : 2019-01-20 12:00:00.

我还没有真正想出如何开始解决这个问题.我的想法是类似的东西,例如

I haven't really figured out how to start to solve this problem. My idea was something similar such as

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

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

So the question is how can I possibly be able to sleep until a certain time given in a value of 2019-01-20 12:00:00?

推荐答案

简单,算出多长时间,睡个觉.

您可以计算达到唤醒时间和睡眠增量时间所需的时间.

Easy, calculate how long it is, and sleep the time.

You can calculate how long it takes until your wakeup time is reached and sleep for the delta time.

Python 可以计算时间间隔.如果你从另一个中减去一个时间戳,那么你会得到一个 datetime.timedelta:

Python can calculate with time intervals. If you subtract one timestamp from another, then you get a 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')

当然,你可以把它放在一个函数中:

of course, you can put that in a function:

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.

You can check the return value: only if it slept, it returns True.

顺便说一句:没关系,使用过去的日期作为目标.这将生成负数秒.休眠负值将不会休眠.

BTW: it's OK, to use a date in the past as target. This will generate a negative number of seconds. Sleeping a negative value will just not sleep.

如果你的时间是一个字符串,使用这个:

if your time is a string, use this:

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

这篇关于如何睡到特定时间 YYYY-MM-DD HH:MM:SS?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆