datetime.strptime转换未来日期报错?实为格式问题求解
问题解答
datetime.strptime完全支持转换未来日期,你的报错和日期是否为未来无关,根源是格式字符串与日期字符串的结构不匹配。
报错原因分析
你使用的格式字符串%Y-%d-%m代表年-日-月的日期结构,但传入的"2022-11-16"实际是年-月-日的格式:
- 第二个例子
"2022-11-12"能成功执行只是巧合:12是合法的月份值(1-12),strptime错误地将11解析为日,12解析为月,最终得到的是2022年12月11日,这并非你预期的结果。 - 第一个例子
"2022-11-16"报错,是因为16超出了月份的合法范围(1-12),解析时触发异常,提示“unconverted data remains: 6”是解析失败后的连带信息。
解决方法
将格式字符串改为匹配年-月-日结构的%Y-%m-%d即可:
from datetime import datetime end = datetime.strptime("2022-11-16", "%Y-%m-%d")
修改后,无论过去还是未来的日期,只要格式符合YYYY-MM-DD,都能正常解析。
内容的提问来源于stack exchange,提问作者Jun Takeshita
相关产品推荐
相关产品推荐

