优草派  >   Python

python利用datetime模块计算时间差

周文涛            来源:优草派

python 的 datetime 模块提供了多个类来处理日期和时间。由于时间和日期实现方法复杂而且与语言和文化等因素有关,因此良好的实现非常重要。datetime 模块实现了具有相当多的功能的类来处理日期、时间和时间间隔。在本篇文章中,我将介绍 datetime 以及它如何被用来计算时间间隔。

python利用datetime模块计算时间差

1. datetime 模块介绍

datetime 模块由一系列类组成,其中最重要的是 datetime、date 和 time。datetime 包含 date 和 time,它们分别处理日期和时间。以下是 datetime 模块中最重要的类:

datetime.date:表示日期的类(年、月、日)

datetime.time:表示时间的类(时、分、秒、微妙)

datetime.datetime:表示日期和时间(年、月、日、时、分、秒、微妙)

datetime.timedelta:表示时间间隔和持续时间

2. 计算时间间隔

Python 可以使用 timedelta 类计算时间间隔。以下是 timedelta 类支持的算术运算:

timedelta + timedelta => timedelta

timedelta - timedelta => timedelta

timedelta * int => timedelta

timedelta / int => timedelta

下面是一个例子:

import datetime

dt1 = datetime.datetime(2019, 3, 21, 9, 0, 0)

dt2 = datetime.datetime(2019, 3, 22, 9, 0, 0)

td = dt2 - dt1

print(td) # 输出 1 day, 0:00:00

在这个例子中,我们创建了两个 datetime 对象:dt1 和 dt2。我们计算它们之间的时间差并将它存储在 td 变量中。当我们打印 td 变量时,输出的日期是 1 天,但这只是它的默认格式化方式。我们可以自己格式化输出,如:

print('{} days'.format(td.days)) # 输出 1 day

3. 将字符串转换为日期格式

有时我们需要将字符串转换为日期格式,datetime 模块中有一个方法叫 strptime() 可以帮助我们实现这个目标。该方法允许我们通过自定义格式指定我们期望的日期和时间,然后将字符串转换为 datetime 对象。以下是一些示例:

import datetime

s1 = '2019-03-21'

d1 = datetime.datetime.strptime(s1, '%Y-%m-%d')

print(d1) # 输出 2019-03-21 00:00:00

s2 = '03/21/2019'

d2 = datetime.datetime.strptime(s2, '%m/%d/%Y')

print(d2) # 输出 2019-03-21 00:00:00

在这个例子中,我们将两个不同格式的字符串转换为 datetime 对象。我们使用 strptime() 方法来指定自定义格式并创建 datetime 对象,并使用 print 语句查看转换的结果。

4. 将日期格式化为字符串

同样,我们也可以将 datetime 对象格式化为字符串,使用 strftime() 方法。以下是一些示例:

import datetime

d = datetime.datetime(2019, 3, 21, 9, 0, 0)

s1 = d.strftime('%m/%d/%Y')

print(s1) # 输出 03/21/2019

s2 = d.strftime('%Y-%m-%d %H:%M:%S')

print(s2) # 输出 2019-03-21 09:00:00

在这个例子中,我们从先前的示例中使用 datetime 对象 “d”,并将其格式化为两种不同的字符串格式(使用不同的格式字符串)。

5. 总结

在本文中,我们介绍了 datetime 模块,其中的类可以用于处理日期和时间,在日常工作中,这是非常重要的。我们还介绍了如何使用 datetime 和 timedelta 类计算时间间隔,以及如何将字符串转换为 datetime 对象,并格式化 datetime 对象为字符串。在处理日期和时间时,datetime 模块是 Python 的一个强大工具。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行