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

Python字符串转日期报错‘unconverted data remains:16’问题排查

问题分析:datetime.strptime报错‘unconverted data remains: 16’的原因

先看你贴的这段代码:

print(date)
print(type(date))
print(len(date))
dt = datetime.strptime(date, "%d/%m/%y")

运行后输出的date值是14/11/2016,类型是字符串,长度10,这时候用%d/%m/%y去解析就会触发unconverted data remains: 16的错误,原因其实很直观:

  • 你用的格式符%y是两位数的年份格式,它只会匹配日期字符串里的最后两位数字(也就是16),但你的日期字符串是四位年份2016。当strptime按照%d/%m/%y规则解析时,它会把14匹配%d(日),11匹配%m(月),20匹配%y(两位年份)——这时候字符串里还剩下16没被解析,自然就抛出了“未转换数据残留”的错误。

要解决这个问题,只需要把格式符里的小写%y改成大写的%Y就行,%Y是四位年份的格式符,刚好能匹配2016这个完整的四位年份。修正后的代码如下:

from datetime import datetime  # 别忘了提前导入datetime模块哦
date = "14/11/2016"
print(date)
print(type(date))
print(len(date))
dt = datetime.strptime(date, "%d/%m/%Y")
print(dt)  # 这时候就能正常输出datetime对象啦

总结一下:小写y对应两位年份,大写Y对应四位年份,搞混两者就会出现这种解析不完整的错误~

内容的提问来源于stack exchange,提问作者Jerry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:12:11