您的位置:

Python py strptime:将字符串转换为日期时间

一、概述:strptime和strftime函数

Python中的strptime函数和strftime函数具有极大的相似性,都是用来进行格式化输出和时间字符串转换。strptime是用来将时间字符串解析成时间格式的函数,而strftime则是用来将时间格式格式化为时间字符串的函数。strptime和strftime函数都依赖于格式化指令。

strptime 函数接收两个参数:一个是字符串形式的日期时间,另一个是日期时间的格式。

strftime函数接收两个参数:一个是日期时间的格式,另一个是时间元组。

二、strptime函数详解

strptime函数可以将时间格式的字符串解析成时间元组。时间元组是由以下9个元素组成的:

struct_time(tm_year=2021, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=1, tm_isdst=-1)

其中,tm_year代表年份,从1900开始,所以如果要表示2021年,则tm_year的值为121。tm_mon代表月份,从1开始,范围为1~12。tm_mday代表日期,从1开始,范围为1~31。tm_hour代表小时,从0开始,范围为0~23。tm_min代表分钟,从0开始,范围为0~59。tm_sec代表秒数,从0开始,范围为0~61(60和61是闰秒)。tm_wday代表星期几,从0开始,范围为0~6,0为星期一,6为星期日。tm_yday代表一年中的第几天,从1开始,范围为1~366。tm_isdst代表是否为夏令时,-1代表不确定,0代表不是,1代表是。

下面是一个示例代码:

from datetime import datetime
date_time_str = '2022-05-08 10:00:00'
date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S')
print('日期时间对象:', date_time_obj)

以上代码的输出结果为:

日期时间对象:2022-05-08 10:00:00

strptime中常用的格式化指令如下:

格式化指令 说明
%a 星期几的本地简写
%A 星期几的本地完整名称
%b 月份的本地简写
%B 月份的本地完整名称
%c 本地日期和时间表示
%d 一个月中的日期(01~31)
%H 24小时制的小时数(00~23)
%I 12小时制的小时数(01~12)
%j 一年中的第几天(001~366)
%m 月份(01~12)
%M 分钟数(00~59)
%p AM或PM
%S 秒数(00~61)
%U 一年中的星期数(00~53),星期天是一个星期的起始
%w 一个星期中的第几天(0~6,0为星期天)
%W 一年中的星期数(00~53),星期一是一个星期的起始
%x 本地相应的日期表示
%X 本地相应的时间表示
%y 年份的最后两位数(00~99)
%Y 年份的完整表示,4位数
%z 与UTC偏移的整小时数(+HHMM或-HHMM)
%Z 时区的名称(为空白字符,或者美国标准缩写)
%% 百分号

三、strftime函数详解

strftime函数可以将时间元组格式化为时间字符串。下面是一个示例代码:

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

以上代码的输出结果为:

2022-05-08 18:30:00

常用的格式化指令与strptime函数中一致,此处不再赘述。

四、应用场景

strptime函数和strftime函数是处理时间的重要方法,应用场景非常广泛。比如,在实际开发中,用户输入的数据往往是字符串格式的,而程序需要的是时间格式,这时就需要将字符串格式的数据使用strptime函数转换为时间格式;又比如在数据分析过程中,我们需要对时间进行聚合和分组,而时间类型不方便进行直接的操作,这时就需要将时间格式使用strftime函数转换为字符串格式。

五、总结

Python中的strptime和strftime函数是处理时间的常用方法,可以实现字符串与时间格式的相互转换。strptime函数将时间字符串解析成时间元组,而strftime函数将时间元组解析成时间字符串。在实际开发中应用广泛,是程序员处理时间的重要工具。