Python使用datetime.timedelta传days参数出现in arg错误如何解决
问题排查和解决方法
- 检查是否存在命名冲突
你大概率是在当前作用域定义了和timedelta同名的变量、函数或类,覆盖了从datetime导入的标准库对象。比如你可能写了timedelta = 123或者自定义了同名函数,导致调用时参数规则不符合标准库要求,PyCharm就会报参数错误。全局搜索下你代码里的timedelta关键字,把自定义的重命名即可。 - 确认导入语句位置和正确性
检查你写的导入语句from datetime import datetime, timedelta是不是写在了使用timedelta(days=14)的代码之前,有没有被后续的其他导入语句覆盖。比如有没有其他模块也导出了同名的timedelta类,后面导入的替换了标准库的实现。 - 排除PyCharm索引异常
如果确认代码本身没有问题,大概率是PyCharm的索引缓存出错导致的误报。你可以点击顶部菜单栏的File > Invalidate Caches...,勾选清除文件系统缓存和本地历史,重启IDE后再看报错是否消失。 - 辅助检查nowInUtc类型
虽然这个不会直接触发timedelta的参数报错,但你可以顺便确认nowInUtc确实是datetime类型对象,而非字符串、时间戳等其他类型,否则运行时会出现类型不兼容的加法报错。另外你用pytz做时区处理的话,建议用datetime.now(pytz.UTC)代替datetime.utcnow()生成带时区的aware datetime对象,避免后续和网站时区匹配出错。
内容的提问来源于stack exchange,提问作者realWallawalla
相关产品推荐
相关产品推荐

