Python中datetime模块使用及Excel日期导入适配问题
解决Python解析Excel日期时间格式不匹配的问题
这问题我碰到过好多次了,核心就是你用的格式字符串和Excel里的日期格式完全不匹配,所以才会报错。
Excel里的日期格式是11/11/2005 12:00:00 AM,属于月/日/年 + 12小时制时间(带AM/PM标识),而你用的%Y-%m-%d %H:%M:%S对应的是年-月-日 + 24小时制时间,肯定对不上。
正确的格式字符串
你需要把strptime的格式参数改成和Excel日期匹配的:
'%m/%d/%Y %I:%M:%S %p'
各个部分的含义:
%m:两位数的月份(01-12)%d:两位数的日期(01-31)%Y:四位数的年份(比如2005)%I:12小时制的小时(01-12,对应AM/PM)%M:两位数的分钟%S:两位数的秒%p:AM/PM标识(Excel里是大写,这个格式符会自动识别)
修改后的完整代码
import datetime # 从Excel获取的日期字符串 excel_date_str = "11/11/2005 12:00:00 AM" # 用正确的格式解析 start = datetime.datetime.strptime(excel_date_str, '%m/%d/%Y %I:%M:%S %p') print(start) # 输出结果:2005-11-11 00:00:00(自动转成了24小时制的datetime对象)
额外注意事项
- 如果你的Excel日期里的AM/PM是小写的(比如
am/pm),可以先把字符串转成大写再解析:excel_date_str = excel_date_str.upper() - 少数情况下,Excel可能用的是
日/月/年格式(比如欧洲地区),如果解析后日期明显不对(比如月份超过12),可以把格式改成'%d/%m/%Y %I:%M:%S %p'试试。
内容的提问来源于stack exchange,提问作者MAJ
相关产品推荐
相关产品推荐

