您的位置:

Python datetime.strptime格式化指令及用途

一、datetime.strptime函数介绍

在Python中,datetime模块中的strptime函数可以将字符串转换为DateTime对象。strptime的用法是将日期和时间解析成时间元组,然后返回一个datetime.datetime对象。

strptime函数的语法如下:
datetime.strptime(date_string, format)

其中,date_string是需要解析的字符串,format是date_string的格式。strptime函数会根据format参数指定的格式对date_string进行解析。它返回一个表示日期时间的datetime.datetime对象。

二、strptime解析日期格式控制指令

下面我们介绍一下strptime解析日期格式的控制指令:

指令           含义                                          示例
%Y         四位数的年份                                  2021
%y         两位数的年份                                  21
%m         月份(数字表示)                              01-12
%B         月份(英文全称)                              January-December
%b         月份(英文缩写)                              Jan-Dec
%d         一个月中的第几天                              01-31
%w         一周中的第几天(0代表星期日)                 0-6
%A         星期(英文全称)                              Sunday-Saturday
%a         星期(英文缩写)                              Sun-Sat
%H         小时(24小时制)                             00-23
%I         小时(12小时制)                             01-12
%p         上午或下午(AM / PM)                         AM/PM
%M         分钟                                          00-59
%S         秒                                            00-59
%f         微秒                                          000000-999999
%z         UTC偏移量                                     +HHMM或-HHMM
%Z         时区名称                                      UTC、EST、PST
%%         百分号                                        %

三、strptime函数代码示例

下面的示例展示了如何使用strptime函数将字符串转换为DateTime对象:

import datetime

date_string = "2021-12-31"
format = "%Y-%m-%d"
date_object = datetime.datetime.strptime(date_string, format)
print(date_object)

输出结果为:
2021-12-31 00:00:00

四、strptime解析含有时区信息的日期时间字符串

如果要解析含有时区信息的日期时间字符串,可以使用strptime的%z和%Z指令。

下面的示例展示了如何解析包含时区信息的日期时间字符串:

import datetime

date_string = "2021-12-31 06:45:00 UTC-0500"
format = "%Y-%m-%d %H:%M:%S %Z%z"
date_object = datetime.datetime.strptime(date_string, format)
print(date_object)

输出结果为:
2021-12-31 06:45:00-05:00

五、strptime解析指定格式的日期时间字符串

如果要解析指定格式的日期时间字符串,需要在format参数中指定与date_string格式相同的日期时间格式。

下面的示例展示了如何解析指定格式的日期时间字符串:

import datetime

date_string = "12/31/21 06:45:00 PM"
format = "%m/%d/%y %I:%M:%S %p"
date_object = datetime.datetime.strptime(date_string, format)
print(date_object)

输出结果为:
2021-12-31 18:45:00

六、strptime解析非标准日期时间格式的字符串

如果要解析非标准日期时间格式的字符串,可以使用re模块中的正则表达式来解析字符串。

下面的示例展示了如何使用正则表达式解析非标准日期时间格式的字符串:

import re
import datetime

date_string = "December 31st, 21 at 6:45 PM"
format = "%B %dst, %y at %I:%M %p"
date_pattern = re.compile("(\d+)(?:st|nd|rd|th)")
match = date_pattern.search(date_string)
if match is not None:
    suffix = match.group(1)
    date_string = re.sub(date_pattern, suffix, date_string)
date_object = datetime.datetime.strptime(date_string, format)
print(date_object)

输出结果为:
2021-12-31 18:45:00

七、总结

strptime函数是Python中非常有用的函数,它可以将字符串转换为DateTime对象。在使用strptime函数时,需要注意日期时间字符串的格式,并且指定相应的控制指令。

在解析日期时间字符串时,如果日期时间字符串包含时区信息或者是非标准的日期时间格式,需要使用%z和%Z指令或者正则表达式进行解析。

通过掌握strptime函数的用法,开发人员可以更加灵活地解析日期时间字符串并将其转换为DateTime对象,从而满足不同的业务需求。