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

问题描述

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

要使我的警报系统正常工作,我需要知道该警报触发时间的时间。

如果我要设置闹钟(例如19:30,时间将始终输入为24小时),则我需要该闹钟才能找出下一次的闹钟时间是19 :30,因为如果我将闹钟设置为19:30之前可能是同一天,或者如果我将闹钟设置为19:30之后可能是第二天。

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

任何帮助将不胜感激

解决方法

您可以简单地对结果使用timestamp方法。这将返回datetime实例的纪元时间。几乎在任何情况下都可以使用,特别是因为它是一个简单的闹钟,但是请注意文档中的这种错误。

假定朴素的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())