为什么Python 3.8的strptime函数无法正确解析date_time_str2日期字符串?
问题原因
你使用的strptime格式符和待解析字符串内容不匹配:
%A对应星期的完整英文名称(如Monday),但date_time_str2中的Mon是星期缩写,需要用*小写%a*匹配%B对应月份的完整英文名称(如October),但date_time_str2中的Oct是月份缩写,需要用*小写%b*匹配
另外注意date_time_str1的两个括号之间有3个空格,你原本的格式串里仅写了1个空格,也可能触发格式匹配错误,需要对应调整空格数量。
修复方案
修改对应解析规则即可正常运行,非英文系统环境下还需要临时设置英文locale避免英文时间缩写识别失败,完整可运行代码如下:
from datetime import datetime import time import locale # Windows系统可将参数替换为'English_US' locale.setlocale(locale.LC_TIME, 'en_US.UTF-8') print(time.tzname) date_time_str1 = '(2021,10,4) (19,36,21)' date_time_str2 = 'Mon Oct 4 11:13:08 2021' print(date_time_str1) print(date_time_str2) # 调整str1格式串的空格数量匹配原字符串 date_time_obj = datetime.strptime(date_time_str1, '(%Y,%m,%d) (%H,%M,%S)') print ("The date is", date_time_obj) # 调整str2的格式符匹配缩写内容 date_time_obj = datetime.strptime(date_time_str2, '%a %b %d %H:%M:%S %Y') print ("The date is", date_time_obj)
内容的提问来源于stack exchange,提问作者Walt
相关产品推荐
相关产品推荐

