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

Python strptime()报错:参数1需为str而非datetime.date的问题求助

解决日期转换的TypeError问题

嘿,我来帮你捋清楚这个问题!你遇到的TypeError: strptime() argument 1 must be str, not datetime.date报错,本质是搞反了日期和字符串的转换方向,而且你的from_date其实已经是datetime.date类型了,根本不需要再用strptime转换。

错误原因拆解

你提到from_date来自ini文件的2018-01-01,但执行print(type(from_date))后,应该能看到它的类型是datetime.date——这说明在你调用strptime之前,已经有代码把ini里的字符串自动解析成日期对象了。而datetime.strptime()的作用是把字符串转换成日期对象,你给它传一个已经是日期类型的变量,自然会报错。

解决方案

根据你的需求分两种情况处理:

  • 如果你需要的是datetime.date类型的对象:
    直接用现有的from_date就行,不需要任何转换代码。

  • 如果你需要把日期对象转换成特定格式的字符串:
    用strftime()方法(注意是strftime,不是strptime),示例代码:

    # 假设from_date已经是datetime.date类型
    from_date_str = from_date.strftime('%Y-%m-%d')
    print(from_date_str)  # 输出结果:'2018-01-01'
    
  • 如果你确实需要从ini的字符串转日期:
    检查代码中是否有重复转换的逻辑,确保只在拿到原始字符串时调用一次strptime:

    import configparser
    import datetime
    
    # 读取ini文件的原始字符串
    config = configparser.ConfigParser()
    config.read('你的配置文件.ini')
    from_date_str = config.get('配置节名称', 'from_date')
    
    # 只在这里转一次日期对象
    from_date = datetime.datetime.strptime(from_date_str, '%Y-%m-%d').date()
    

一句话总结

strptime是字符串→日期,strftime是日期→字符串,先确认你的变量类型,再选对应的转换方法就不会错啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:35:15