如何使用Python的datetime库中的strftime函数格式化日期时间
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库来获取时区信息,同时注意时区转换后的时差问题。
