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

如何解决Python中AttributeError: type object 'datetime.datetime' has no attribute 'timedelta'错误

解决datetime模块AttributeError:'datetime.datetime'没有'timedelta'属性的问题

错误原因

你遇到的AttributeError: type object 'datetime.datetime' has no attribute 'timedelta'是因为timedelta是datetime模块的直接成员,而非datetime.datetime类的属性,调用方式错误导致的。

修正方案及代码优化

除了修正timedelta的调用方式,还需要补充缺失的模块导入、优化变量命名(避免同一变量存储不同类型数据),以下是完整修正后的代码:

import datetime
import requests  # 补充缺失的requests模块导入

print('请输入需要追溯的天数:')

days_ago = int(input())  # 直接转换为整数,简化步骤
today = datetime.datetime.now()

# 修正timedelta调用方式,同时更换变量名避免混淆
start_date = today - datetime.timedelta(days=days_ago)

# strftime直接返回字符串,无需额外str()转换
start_date_str = start_date.strftime('%Y-%m-%d')
today_str = today.strftime('%Y-%m-%d')

response = requests.get(
    f"http://api.marketstack.com/v1/eod?access_key=###########&symbols=AAPL&date_from={start_date_str}&date_to={today_str}"
)
print(response)

关键修正点

  • 修正timedelta调用:将datetime.datetime.timedelta改为datetime.timedelta,这是核心错误的解决方式
  • 补充模块导入:代码中使用requests.get但未导入requests模块,必须添加import requests
  • 优化变量命名:原代码中amount_Of_Days_Ago既存储整数天数又存储日期对象,容易引发逻辑混淆,改为days_ago(存储天数)和start_date(存储日期对象)
  • 简化类型转换:strftime()方法返回的已经是字符串类型,无需再用str()二次转换
  • 使用f-string拼接URL:相比字符串拼接,f-string更简洁易读

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:57:11