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

Python解析含2月29日的日期字符串时触发"day is out of range for month"错误的原因咨询

Python解析含2月29日的日期字符串时触发"day is out of range for month"错误的原因咨询

哦,这个问题我之前踩过坑!原因其实很直白——你传入的日期字符串里没有包含年份,strptime在这种情况下会默认使用1900年作为基准年份,而1900年并不是闰年,2月份只有28天,自然就会抛出「日期超出月份范围」的错误了。

这里得补充个闰年小知识:整百年份必须能被400整除才是闰年,1900除以400等于4.75,不符合条件,所以它的2月没有29号;而你提到的2024年是普通闰年(能被4整除但不是整百年),所以才有2月29日。

给你两个解决思路:

  • 第一种:修改日期字符串,加上年份,同时调整格式字符串:
    import datetime
    
    tstr = "2024-02-29 13:34:57.041"
    dt = datetime.datetime.strptime(tstr, '%Y-%m-%d %H:%M:%S.%f')
    
  • 第二种:如果没法修改原始字符串,就在解析后手动替换年份:
    import datetime
    
    tstr = "02-29 13:34:57.041"
    dt = datetime.datetime.strptime(tstr, '%m-%d %H:%M:%S.%f').replace(year=2024)
    

这样就能得到正确的2024年2月29日的datetime对象啦。

备注:内容来源于stack exchange,提问作者lucky1928

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 08:08:12