如何在Python中找到未来时间的epoch时间



我目前正在用Python编写闹钟,但我遇到了一些技术困难。用户可以选择重复报警(在给定的日期(或不重复报警。然后,他们提供他们希望触发警报的分钟和小时。

为了让我的警报系统工作,我需要知道警报应该触发的时间。

如果我试图设置闹钟(例如,对于19:30,时间将始终输入为24小时(,我需要闹钟能够找到下一次19:30的历元时间,因为如果我在19:30之前设置闹钟,它可能在同一天,如果我在19-30之后设置闹钟,则它可能在第二天。

正因为如此,这意味着我不能简单地执行time.localtime(),然后取得到的struct_time对象,并将小时和分钟换成整数19和30(分别位于对象命名元组的索引3和4(,因为我还必须正确地分配一年中的月、日和日的值,才能有一个有效的struct_time对象,这需要大量的操作,当我觉得可能有一种更合理的方法来做到这一点时。

如有任何帮助,将不胜感激

您可以简单地对结果使用timestamp方法。这将返回datetime实例的epoch时间。这几乎在任何情况下都有效,尤其是因为这是一个简单的闹钟,但要注意文档中的这一点。

假定Naive datetime实例表示本地时间,此方法依赖于平台C mktime((函数来执行转换。由于在许多平台上,datetime支持比mktime((更大范围的值,因此此方法可能会在过去或将来引发OverflowError。

根据您的程序体系结构,您还可以考虑使用两次之间的秒数,这可以使用简单的减法来获得timedeltatotal_seconds函数:

import time
import datetime
start = datetime.datetime.now()
time.sleep(2)
end = datetime.datetime.now()
# print total seconds
print((end - start).total_seconds())

最新更新