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

时间:2016-04-23 11:06:53

标签: python time timedelta

我原本以为这个问题已经有了答案,但似乎并没有。在Python中,我想计算来自" now"的秒数。到了指定的时间"今天"或者"明天,"每当下一次发生时(例如,下一次发生在6:30 AM)。计划是倒数秒并在指定时间启动音乐闹钟。我是Python的新手,到目前为止,datetime文档并没有帮助我。有人可以给我一些帮助吗?

3 个答案:

答案 0 :(得分:6)

这应该做的工作:

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)

答案 1 :(得分:3)

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对象给出了天,秒,微秒的差异,因此对于这个例子,有一个8483秒直到630 am,这相当于大约2小时21分23秒。

答案 2 :(得分:0)

那非常尖锐!现在整个事情,从上午/下午时间到剩下的几秒钟(可能有一种方法可以用更少的代码行完成,但是这样做了):

>>> from datetime import datetime, timedelta
>>> futime = '10:30 AM'
>>> fustrip = futime.rstrip(' AM')
>>> fusplit = fustrip.split(':')
>>> hr = int(fusplit[0])
>>> min = int(fusplit[1])
>>> now = datetime.now()
>>> secsleft = int((timedelta(hours=24) - (now - now.replace(hour=hr, minute=min, second=0, microsecond=0))).total_seconds() % (24 * 3600))
>>> secsleft
2063

这就是今天(上午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