如何在Python中计算时间差

在Python中处理日期和时间时,您经常需要计算时间差。在本教程中,您将学习如何计算两个时间戳之间的小时、分钟和秒的差异。

通过本教程,您将学习:

  • 如何使用Python的datetime模块处理日期和时间
  • timedelta对象是什么以及它们如何有用
  • 计算任意两个时间戳之间的时间差——以小时、分钟和秒为单位

让我们开始吧。

如何使用Python的datetime模块

要在Python中处理日期和时间,您将使用datetime模块。 datetime模块是Python标准库的一部分。因此,您可以立即将其导入到您的工作环境中,就像这样:

import datetime

为了计算时间差,您需要创建两个不同的时间戳。您可以选择创建:

  • 两个date对象
  • 两个time对象,或者
  • 结合datetime的对象——datetime对象

如何在Python中创建date对象

让我们从datetime模块导入date类。要在Python中创建一个date对象,您可以使用通用语法datetime.date(,,)。下面是创建date对象date1的示例:

from datetime import date
date1 = datetime.date(2022,3,27)
print(date1)

# 输出:2022-03-27

您可以在Geekflare Python compiler上尝试运行此代码以进行测试。或在计算机上进行install Python

如上所示,当您打印日期时,它以“YYYY-MM-DD”格式进行格式化。

注意:请确保将月份指定为整数而无需任何前导零。在写日期时,您可能习惯于在月份前加上前导零。

例如,要指定6月份(年份的第6个月),请使用6而不是06。

例如,请尝试运行以下代码片段,其中将月份指定为03而不仅仅是3。您将看到它会抛出Syntax Error,如下所示:

date1 = datetime.date(2022,03,27)

print(date1)

# 错误消息
File "", line 1
    date1 = datetime.date(2022,03,27)
                                ^
SyntaxError: invalid token

接下来,让我们看看如何在Python中创建time对象。

如何在Python中创建time对象

要创建一个time对象,让我们导入time类。可以通过指定以下类属性:hourminutesecondmicrosecond来创建任何Python时间对象。

然而,所有这些属性都是可选的。如果您不指定某个属性(比如second),它将默认设置为0。

以下代码片段显示了如何创建一个time对象time1。与date对象一样,您可以打印出time对象以查看格式化的时间。

from datetime import time
time1 = datetime.time(13,27,45,4600)
print(time1)

# 输出:13:27:45.004600

如何在Python中创建datetime对象

如您所见,date对象没有关于时间的信息。而time对象不包含日期的信息。

然而,在实践中,您将需要日期和时间信息。因此,建议使用datetime类。

您可以在Python中访问datetime类并创建datetime对象,如下所示:

dt1 = datetime.datetime(2022,3,27,13,27,45,46000)
print(dt1)

# 输出:2022-03-27 13:27:45.046000

现在让我们创建另一个没有second属性的dt2对象。您可以看到它被设置为默认值0

dt2 = datetime.datetime(2022,6,30,14,28)
print(dt2)

# 输出:2022-06-30 14:28:00

到目前为止,您已经学会了如何在Python中创建时间戳——作为日期、时间和日期时间。现在是时候看看如何计算任意两个时间戳之间的差异了。

请继续前往下一节了解详情。

如何在Python中使用timedelta对象

在Python中,timedelta表示一段时间。它是两个datetimedatetime对象之间的差异。

如果您相加或相减两个datetimedatetime对象,将得到一个timedelta对象。这个timedelta对象具有有用的属性和方法,可以帮助计算时间差。

让我们继续计算两个datetime对象dt1dt2之间的差异。

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)) 

# 输出
95 days, 1:00:14.954000 

从上面的代码片段中,您可以看到tdelta变量保存了dt1dt2之间的时间差。而且使用Python内置的type()函数验证了tdelta的类型为timedelta类。

现在让我们编写另一个示例。

如何计算两个日期之间的时间差

让我们来看一个简单而有趣的例子。

问题:计算当前日期(今天)与您的生日之间的时间差
为此,将今天设置为第一个时间戳,将您的生日设置为第二个时间戳。

作为第一步,让我们创建两个datetime对象:

  • 一个用于表示今天,我们称之为today,和
  • 另一个用于表示您的生日,我们称之为bday

datetime类有一个now()方法,可以获取当前本地日期和时间。因此,让我们使用它来获取today——我们的参考日期。

today = datetime.datetime.now()
print(today)

# 示例输出:2022-01-22 09:10:18.489538

在下面的代码中,将bday替换为您的生日,以计算距离今年生日的剩余时间。

如果您在生日过去后阅读此内容,请随意将bday设置为您的下一个生日。

bday = datetime.datetime(2022,8,30,11,59)
print(bday)

# 示例输出:2022-08-30 11:59:00

下一步是计算time_diff,它是一个timedleta对象,如前所述。只需从bday中减去today,就可以得到时间差。

time_diff = bday - today
print(f"距离您的生日还有{time_diff}")

# 输出
距离您的生日还有220 days, 2:46:00.127416

要知道剩余的天数,使用time_diff上的days属性,如下所示:

tdays = time_diff.days
print(f"距离您的生日还有{tdays}天。")

# 输出
距离您的生日还有220天。

如何计算时间差(以秒为单位)

现在让我们计算距离你的生日还有多少秒。

要计算总的时间差异(以秒为单位),请使用time_diff上的total_seconds()方法。

tsecs = time_diff.total_seconds()
print(f"你的生日还有{tsecs}秒.")

# 输出
你的生日还有19017960.127416秒.

哎呀,太长的等待时间了!

话虽如此,你现在知道如何计算任意两个时间戳之间的时间差异(以秒为单位)。

现在我们回顾一些基础知识并写下以下内容。一天由24小时组成,一小时为60分钟,一分钟由60秒组成。

下面的图片总结了这一点:

小时,分钟和秒钟

所以要从秒转换为分钟,小时和天,你可以使用以下表格,并通过相应的换算因子进行除法运算。

时间转换表

在接下来的部分,让我们将时间差异(以秒为单位)转换为分钟和小时。

如何找到分钟的时间差异

要得到分钟的时间差异,你只需要将总秒数除以60。

让我们将tsecs除以60,并将其存储在名为tmins的变量中,如下所示:

tmins = tsecs/60
print(f"你的生日还有{tmins}分钟.")

# 输出
你的生日还有316966.0021236分钟.

如何找到小时的时间差异

现在你已经计算出分钟的时间差异,可以将其除以60得到小时的差异。或者你可以将总秒数除以60*60 = 3600。

thrs = tsecs/(60*60)
print(f"你的生日还有{thrs}小时.")

# 输出
你的生日还有5282.76670206小时.

所以现在你已经学会了如何计算你选择的任何单位的时间差异。

结论

在本教程中,你学会了如何:

  • 使用Python的datetime模块创建和处理日期和时间,
  • 使用timedelta对象获取时间跨度或时间差异,以及
  • 计算以秒、分钟和小时为单位的时间差异。

希望你觉得这个教程有帮助。现在你已经了解了如何用Python计算时间差异,是时候了解更多相关知识了。

愉快学习和编码!

学习如何写链接或链接

类似文章