Python使用strptime转换日期字符串报错格式不匹配如何解决
错误原因
你的strptime格式字符串和输入的时间字符串结构不匹配,存在两个问题:
- 原时间字符串中
Fri,后带有1个空格,你写的格式字符串%a,%d中逗号后没有空格,字符对应不上 - 从报错信息来看,你实际运行的代码里格式字符串漏了
%d日期占位符,导致Dec月份缩写没有对应的匹配规则
正确实现代码
from datetime import datetime dte_str = "Fri, 03 Dec 2021 11:43:55" # 格式字符串严格对齐原字符串的字符、顺序 dte = datetime.strptime(dte_str, "%a, %d %b %Y %H:%M:%S")
补充说明
如果运行时依然提示匹配失败,是因为你的运行环境默认locale为中文,无法识别英文的星期、月份缩写,添加locale设置即可:
from datetime import datetime import locale # 临时将时间解析的locale设置为英文 locale.setlocale(locale.LC_TIME, 'en_US.UTF-8') dte_str = "Fri, 03 Dec 2021 11:43:55" dte = datetime.strptime(dte_str, "%a, %d %b %Y %H:%M:%S")
格式占位符对应说明
%a:匹配星期缩写(英文环境下对应Fri、Mon等)%d:匹配两位数字日期(取值范围01~31)%b:匹配月份缩写(英文环境下对应Dec、Jan等)%Y:匹配四位数字年份%H:%M:%S:匹配24小时制的时、分、秒
内容的提问来源于stack exchange,提问作者leauradmin
相关产品推荐
相关产品推荐

