如何在Python中计算时间差
在Python中处理日期和时间时,您经常需要计算时间差。在本教程中,您将学习如何计算两个时间戳之间的小时、分钟和秒的差异。
通过本教程,您将学习:
- 如何使用Python的
datetime
模块处理日期和时间 timedelta
对象是什么以及它们如何有用- 计算任意两个时间戳之间的时间差——以小时、分钟和秒为单位
让我们开始吧。
如何使用Python的datetime模块
要在Python中处理日期和时间,您将使用datetime
模块。 datetime
模块是Python标准库的一部分。因此,您可以立即将其导入到您的工作环境中,就像这样:
import datetime
为了计算时间差,您需要创建两个不同的时间戳。您可以选择创建:
- 两个
date
对象 - 两个
time
对象,或者 - 结合
date
和time
的对象——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类。可以通过指定以下类属性:hour
、minute
、second
和microsecond
来创建任何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
表示一段时间。它是两个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))
# 输出
95 days, 1:00:14.954000
从上面的代码片段中,您可以看到tdelta
变量保存了dt1
和dt2
之间的时间差。而且使用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计算时间差异,是时候了解更多相关知识了。
愉快学习和编码!
学习如何写链接或链接