欢迎访问宙启技术站
智能推送

如何使用Python的datetime库中的strftime函数格式化日期时间

发布时间:2023-06-06 23:14:16

Python的datetime库可以方便地获取和处理日期和时间。其中strftime函数是一个非常重要的函数,它可以将日期和时间格式化为一个字符串。在本文中,我们将详细介绍如何使用Python的datetime库中的strftime函数格式化日期时间。

1. strftime函数的语法

先看一下strftime函数的基本语法。

strftime(format[, t])

其中,format是格式化字符串,t是datetime.date或datetime.datetime对象(注意,这里日期时间对象必须是UTC时间或已经转换为UTC时间)。

2. 格式化字符串

format参数是最关键的参数,它决定了输出的日期时间的格式。格式化字符串由一个或多个转换码组成,每个转换码对应日期时间中的一个部分。常用的转换码如下:

- %Y:四位数表示的年份(例如2021)

- %m:双数表示的月份(例如04)

- %d:双数表示的日(例如21)

- %H:24小时制下的小时数(例如15)

- %M:双数表示的分钟数(例如25)

- %S:双数表示的秒数(例如50)

- %z:时区偏移量(例如+0800)

- %a:缩写形式表示的星期几(例如Mon)

- %A:全称表示的星期几(例如Monday)

- %b:缩写形式表示的月份(例如Apr)

- %B:全称表示的月份(例如April)

- %c:本地表示的日期时间(例如2021-04-21 15:25:50)

- %p:上午或下午的标记(例如PM)

- %j:一年中的第几天(例如111)

可以按照需要组合这些转换码,例如:

- %Y-%m-%d:格式化为2021-04-21形式

- %H:%M:%S:格式化为15:25:50形式

3. 基本用法

下面举几个例子来介绍strftime函数的基本用法。

例1:将当前时间格式化为指定格式

from datetime import datetime

now = datetime.utcnow()
print(now.strftime("%Y-%m-%d %H:%M:%S"))

上述代码中,我们首先通过datetime.utcnow()获取当前UTC时间,然后调用strftime函数来将其格式化为"年-月-日 时:分:秒"的形式进行输出。

输出结果为:2021-04-21 07:51:30。

例2:将指定时间格式化为指定格式

from datetime import datetime

dt = datetime(2021, 4, 21, 15, 25, 50)
print(dt.strftime("%Y-%m-%d %H:%M:%S"))

上述代码中,我们首先通过datetime()创建了一个指定时间的datetime对象,然后调用strftime函数将其格式化为指定的形式进行输出。

输出结果为:2021-04-21 15:25:50。

4. 常见应用

strftime函数在日期时间处理中应用广泛,下面介绍几个常见的应用。

4.1. 将时间戳转换为日期时间

有时候我们需要将时间戳转换为格式化的日期时间,可以使用strftime函数来实现。例如:

from datetime import datetime

timestamp = 1619005030
dt = datetime.utcfromtimestamp(timestamp)
print(dt.strftime("%Y-%m-%d %H:%M:%S"))

输出结果为:2021-04-21 07:37:10。

4.2. 将UTC时间转换为本地时间

strftime函数也可以将UTC时间转换为本地时间。需要使用pytz库来获取时区信息。例如:

from datetime import datetime
import pytz

utc_dt = datetime.strptime('2021-04-21 15:25:50', '%Y-%m-%d %H:%M:%S')
local_tz = pytz.timezone('Asia/Shanghai')
local_dt = local_tz.normalize(utc_dt.astimezone(local_tz))
print(local_dt.strftime("%Y-%m-%d %H:%M:%S"))

上述代码中,我们首先将UTC时间字符串转换为datetime对象,然后获取本地时区信息,并通过astimezone()函数将UTC时间转换为本地时间。需要注意的是,转换后的本地时间仍然是UTC时间+时差,需要使用normalize()函数将其调整为真正的本地时间。

输出结果为:2021-04-21 23:25:50。

4.3. 将日期时间格式化为文件名

将日期时间格式化为文件名常用于文件备份或归类,可以使用strftime函数来实现。

例如,将格式化为"年-月-日_时-分-秒"形式的日期时间作为文件名:

from datetime import datetime

now = datetime.utcnow()
file_name = now.strftime("%Y-%m-%d_%H-%M-%S")
print(file_name)

输出结果为:2021-04-21_07-51-30。

5. 总结

strftime函数是Python的datetime库中非常重要的功能之一,它可以将日期和时间格式化为指定的字符串。在格式化字符串中,可以根据需要组合不同的转换码,以实现各种日期和时间格式的输出。需要注意的是,将日期时间从UTC时间转换为本地时间时,需要使用pytz库来获取时区信息,同时注意时区转换后的时差问题。