Python如何将字符串日期"17 Apr"转换为日期格式"17-04-2018"?
解决日期字符串转换的 ValueError 问题
嘿,你的问题我一看就明白啦——咱们一步步来捋清楚:
错误原因
你用了%B作为月份格式符,但这个格式符对应的是完整的月份名称(比如"April"),而你的输入字符串是缩写的"Apr",这就导致格式匹配失败,抛出了ValueError。
正确的解决方案
我们需要做两个核心调整:用正确的月份格式符,并且补充上你需要的2018年(因为原输入里没有年份,默认会用1900年)。直接看可运行的代码:
from datetime import datetime date_string = "17 Apr" # 1. 用%b匹配月份缩写(Apr) parsed_date = datetime.strptime(date_string, "%d %b") # 2. 替换年份为2018 parsed_date = parsed_date.replace(year=2018) # 3. 格式化为目标的"日-月-年"样式 formatted_date = parsed_date.strftime("%d-%m-%Y") print(formatted_date) # 输出:17-04-2018
关键细节解释
%b:专门匹配月份的缩写形式(比如Jan、Feb、Apr这类),刚好对应你输入里的"Apr"。replace(year=2018):因为原输入没有年份信息,strptime会默认把年份设为1900,所以必须手动替换成你需要的2018年。%d-%m-%Y:这个格式串用来生成目标样式,其中%m是两位数字的月份(04对应4月),%Y是四位数字的年份。
这样运行代码就能得到你想要的"17-04-2018"啦!
内容的提问来源于stack exchange,提问作者John_Rodgers
相关产品推荐
相关产品推荐

