一、概述: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函数将时间元组解析成时间字符串。在实际开发中应用广泛,是程序员处理时间的重要工具。