Python 计算从现在到今天或明天指定时间的秒数

Python 计算从现在到今天或明天指定时间的秒数,python,time,timedelta,Python,Time,Timedelta,我本以为这个问题已经有了答案,但似乎没有。在Python中,我想计算从“现在”到指定时间“今天”或“明天”的秒数,无论何时下一次发生(例如,下一次发生在上午6:30)。计划是倒数秒,并在指定时间发出音乐警报。我对Python相当陌生,到目前为止,datetime文档还没有帮到我。有人能帮我一下吗 In [12]: dt = datetime.datetime.now() Out[13]: datetime.datetime(2016, 4, 23, 4, 8, 36, 742436) In [

我本以为这个问题已经有了答案,但似乎没有。在Python中,我想计算从“现在”到指定时间“今天”或“明天”的秒数,无论何时下一次发生(例如,下一次发生在上午6:30)。计划是倒数秒,并在指定时间发出音乐警报。我对Python相当陌生,到目前为止,
datetime
文档还没有帮到我。有人能帮我一下吗

In [12]: dt = datetime.datetime.now()
Out[13]: datetime.datetime(2016, 4, 23, 4, 8, 36, 742436)

In [14]: six_thirty = datetime.datetime(2016, 4, 23, 06, 30, 0, 0)

In [15]: six_thirty - dt
Out[15]: datetime.timedelta(0, 8483, 257564)
笔记 datetime对象的格式为年、月、日、小时、分钟、秒、毫秒


timedelta对象以天、秒、微秒为单位给出差异,因此在本例中,到凌晨630点还有8483秒,这大约转化为2小时21分23秒。

这应该可以完成以下工作:

from datetime import datetime, timedelta

now = datetime.now()
(timedelta(hours=24) - (now - now.replace(hour=6, minute=30, second=0, microsecond=0))).total_seconds() % (24 * 3600)

那太厉害了!现在,从AM/PM时间到剩下的秒数(可能有一种方法可以用更少的代码行来实现这一点,但这是可行的):

那就是今天的时间(上午10:30)。对于明天6:30,它也起作用:

>>> hr = 6
>>> secsleft = int((timedelta(hours=24) - (now - now.replace(hour=hr, minute=min, second=0, microsecond=0))).total_seconds() % (24 * 3600))
>>> secsleft
74063

如果当前时间在上午6:30之前,则此选项有效。如果在之后,则给出负的时间增量,即从今天上午6:30到现在的时间,例如:
datetime.timedelta(-183679286255)
。我还需要能够计算从现在到明天早上6:30的时间。哎呀,等一下:从今天6:30到现在没有83679秒,如果我将未来日期更改为明天,它将给出
datetime.timedelta(083679286255)
。因此,如果我得到一个,也许我只需要花几秒钟的时间忽略
-1
!如果有人能解释为什么这样做,我想看看解释。刚刚注意到:由于这段代码使用24小时时间,当然你必须为下午时间加上12小时!请解释一下你的代码
>>> hr = 6
>>> secsleft = int((timedelta(hours=24) - (now - now.replace(hour=hr, minute=min, second=0, microsecond=0))).total_seconds() % (24 * 3600))
>>> secsleft
74063