如何在 Python 中计算时差

已发表: 2022-01-23

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

在本教程结束时,您将学会:

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

让我们开始吧。

如何使用 Python 的 datetime 模块

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

 import datetime

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

  • 两个date对象,
  • 两个time对象,或
  • datetime的组合—— 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 时间对象: hourminutesecondmicrosecond

但是,所有这些属性都是可选的。 如果您不指定某个属性,例如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表示时间跨度。 这是两个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)) # Output 95 days, 1:00:14.954000 <class 'datetime.timedelta'>

从上面的代码片段中,您可以看到tdelta变量保存dt1dt2之间的时间差。 并且使用 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 中制作蛇游戏。