如何在 Python 中计算时差
已发表: 2022-01-23在 Python 中处理日期和时间时,您通常需要计算时间差。 在本教程中,您将学习如何以小时、分钟和秒为单位计算两个时间戳之间的差异。
在本教程结束时,您将学会:
- 如何使用 Python 的
datetime模块处理日期和时间, - 什么是
timedelta对象,以及它们的用途,以及 - 计算任意两个时间戳之间的时间差——以小时、分钟和秒为单位。
让我们开始吧。
如何使用 Python 的 datetime 模块
要在 Python 中处理日期和时间,您将使用datetime模块。 datetime模块是 Python 标准库的一部分。 因此,您可以立即将其导入您的工作环境,如下所示:
import datetime为了计算时间差,您需要创建两个不同的时间戳。 您可以选择创建:
- 两个
date对象, - 两个
time对象,或 date和time的组合——datetime时间对象。
如何在 Python 中创建日期对象
让我们从 datetime 模块导入date类。 要在 Python 中创建日期对象,可以使用通用语法datetime.date(<year>,<month>,<day>) 。 下面是创建date对象date1的示例:
from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Output: 2022-03-27您可以尝试 Geekflare Python 编译器上的代码进行测试。 或者,在您的计算机上安装 Python。
如上所示,当您打印日期时,日期的格式为YYYY-MM-DD格式。
注意:请务必将月份指定为不带任何前导零的整数。 在写下日期时,您可能习惯于在月份中添加前导零。
例如,要指定 6 月的日期,即一年中的第 6 个月:使用 6 而不是 06。
例如,尝试运行以下代码片段 - 其中月份被提及为03而不是仅3 。 你会看到它抛出了一个语法错误,如下所示:
date1 = datetime.date(2022,03,27) print(date1) # Error Message File "<ipython-input-12-6eb72084e6ce>", line 1 date1 = datetime.date(2022,03,27) ^ SyntaxError: invalid token 现在让我们看看如何在 Python 中创建time对象。
如何在 Python 中创建时间对象
要创建时间对象,让我们导入time类。 通过指定以下类属性,可以使用time类创建任何 Python 时间对象: hour 、 minute 、 second和microsecond 。
但是,所有这些属性都是可选的。 如果您不指定某个属性,例如second ,则默认设置为0 。
以下代码片段显示了如何创建时间对象time1 。 与date对象一样,您可以打印出time对象以查看格式化的时间。
from datetime import time time1 = datetime.time(13,27,45,4600) print(time1) # Output: 13:27:45.004600如何在 Python 中创建日期时间对象
如您所见, date对象没有关于时间的信息。 并且time对象不包含有关日期的信息。
但是,在实践中,您将需要日期和时间信息。 所以建议改用datetime类。
您可以在 Python 中访问datetime类并创建datetime对象,如下所示:
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) print(dt1) # Output: 2022-03-27 13:27:45.046000 现在让我们创建另一个没有second属性的日期时间对象dt2 。 您可以看到它设置为0 - 默认值。
dt2 = datetime.datetime(2022,6,30,14,28) print(dt2) # Output: 2022-06-30 14:28:00到目前为止,您已经学习了如何在 Python 中创建时间戳——作为日期、时间和日期时间。 现在是时候看看如何计算任意两个时间戳之间的差异了。
前往下一部分以找出答案。
如何在 Python 中使用 timedelta 对象
在 Python 中, timedelta表示时间跨度。 这是两个date 、 time或datetime对象之间的区别。
如果您添加或减去两个date 、 time或datetime对象,您将获得一个timedelta对象。 这个timedelta对象具有有用的属性和方法,可以帮助计算时间差。
让我们继续计算两个datetime时间对象dt1和dt2之间的差异。
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) dt2 = datetime.datetime(2022,6,30,14,28) tdelta = dt2 - dt1 print(tdelta) print(type(tdelta)) # Output 95 days, 1:00:14.954000 <class 'datetime.timedelta'> 从上面的代码片段中,您可以看到tdelta变量保存dt1和dt2之间的时间差。 并且使用 Python 的内置type()函数验证timedelta的类型属于tdelta类。

现在让我们编写另一个示例。
如何查找两个日期之间的时差
让我们举一个简单但有趣的例子。
问题:计算当前日期(今天)和您的生日之间的时间差。
为此,请将今天设置为第一个时间戳,并将您的生日设置为第二个时间戳。
第一步,让我们创建两个datetime时间对象:
- 一个今天的,让我们
today称之为,和 - 另一个作为你的生日,我们就叫它
bday吧
datetime类具有now()方法,可以为您提供当前的本地日期和时间。 所以让我们使用它来获取today ——我们的参考日期。
today = datetime.datetime.now() print(today) # Sample Output: 2022-01-22 09:10:18.489538 在下面的代码中,将bday替换为您的生日,以计算您今年生日的剩余时间。
如果您在过生日后阅读此内容,请随时将bday设置为您的下一个生日。
bday = datetime.datetime(2022,8,30,11,59) print(bday) # Sample Output: 2022-08-30 11:59:00 下一步是计算time_diff ,它是一个timedleta对象,如前所述。 只需从您的bday中减去today ,您就会得到时差。
time_diff = bday - today print(f"Your birthday is in {time_diff}") # Output Your birthday is in 220 days, 2:46:00.127416 要知道剩余天数,请使用time_diff上的 days 属性,如下所示:
tdays = time_diff.days print(f"Your birthday is in {tdays} days.") # Output Your birthday is in 220 days.如何找到以秒为单位的时差
现在让我们计算距离您的生日还有多少秒。
要以秒为单位计算总时间差,请在timedelta对象time_diff上使用total_seconds()方法。
tsecs = time_diff.total_seconds() print(f"Your birthday is {tsecs} seconds away.") # Output Your birthday is 19017960.127416 seconds away.嗯,等待的时间太长了!
也就是说,您现在知道如何计算任意两个时间戳之间的时间差(以秒为单位)。
现在让我们重新审视一些基础知识并写下以下内容。 一天由24小时组成,一个小时是60分钟,60秒是一分钟。
这总结在下图中:

因此,要将秒转换为分钟、小时和天,可以使用下表,并除以相应的转换因子。

在接下来的部分中,让我们将时差以秒为单位转换为分钟和小时。
如何找到以分钟为单位的时差
要获得以分钟为单位的时差,只需将总秒数除以 60。
让我们将tsecs除以 60,并将其存储在一个名为tmins的变量中,如下所示:
tmins = tsecs/60 print(f"Your birthday is {tmins} minutes away.") # Output Your birthday is 316966.0021236 minutes away.如何找到以小时为单位的时差
现在您已经计算了以分钟为单位的时间差,您可以将其除以 60 以得到以小时为单位的时间差。 或者您可以将总秒数除以 60*60 = 3600。
thrs = tsecs/(60*60) print(f"Your birthday is {thrs} hours away.") # Output Your birthday is 5282.76670206 hours away.因此,您现在已经学会了如何以您选择的任何单位计算时差。
结论
在本教程中,您学习了如何:
- 使用 Python 的
datetime模块创建和处理日期和时间, - 使用
timedelta对象获取时间跨度或时间差,以及 - 计算以秒、分钟和小时为单位的时间差。
希望本教程对您有所帮助。 既然您已经了解了在 Python 中计算时差的所有知识,那么是时候将您的技能付诸实践了。
快乐的学习和编码!
在此处了解如何编写等于或不等于代码或在 python 中制作蛇游戏。
