You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:24:28