当前位置: 首页 > 面试题库 >

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

匡旭东
2023-03-14
问题内容

我一直在想做一个睡眠功能,它会一直睡眠到某个日期为止。我的想法基于日期,例如: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所给定的某个时间?


问题答案:

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

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


 类似资料:
  • 我正在调用while循环内的线程Hibernate1秒。当标志为true时,循环将运行(标志为true无限时间)。在循环内,线程应Hibernate1秒,唤醒并增加计数器,检查IF条件,如果为FALSE,则应再次Hibernate1秒并继续29次。在第30次迭代中,IF条件为true,IF语句中调用的方法将收集并存储数据。最后,在第32次迭代中,第二个IF语句将把存储的数据发送到服务器,并将计数设

  • 问题内容: 例如,我正在尝试将2008-09-26T01:51:42.000Z转换为2008年9月26日。完成此操作的最简单方法是什么? 问题答案: 最简单的方法是使用dateutil .parser.parse()将日期字符串解析为可识别时区的datetime对象,然后使用strftime()获得所需的格式。

  • 问题内容: 我想将时间戳2011-03-10T11:54:30.207Z转换为10/03/2011 11:54:30.207。我怎样才能做到这一点?我想将ISO8601格式转换为UTC,然后UTC应该可以识别位置。请帮忙 异常:java.text.ParseException:无法解析的日期:“ 2011-03-10T11:54:30.207Z” 问题答案: 首先,您需要意识到,UTC实际上不是时

  • 问题内容: 我正在尝试将yyyy-MM-dd’T’HH:mm:ss.SSSz格式的日期格式化为yyyy-mm-dd HH:mm:ss,这应该很简单,但我无法正常工作。 必须解析的日期的格式为:2012-10-01T09:45:00.000 + 02:00 现在,我使用此简单的日期格式化程序对其进行格式化: 但这给出的输出类似于2012-10-01T09:45:00.000UTC + 00:00。

  • 我从格式为yyyy-mm-dd(加上不需要的hh-mm-ss)的API中获取日期结果。我想在jQuery中将其转换为dd-mm-yyyy格式,最简单/最快的方法是什么? 目前我正在使用:(对于返回的字符串yyyy-mm-dd): 但是好像有点啰嗦。

  • 问题内容: 我有一个日期列,其中日期格式为 在SQL Server中。有什么可能的方法来检索日期格式为 在选择语句中? 问题答案: 试试这个: 源链接 附录1: 如我的评论中所述,您需要先将字段转换为类型,然后才能执行上述操作。此示例应在您的SQL Server上运行: 如果出现此异常: 消息242,级别16,状态3,行1将varchar数据类型转换为datetime数据类型导致超出范围的值。 然