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

如何解决Python中用datetime对象调用yfinance API获取股票数据报错问题

yfinance download方法日期参数报错解决办法

yfinance的download方法对start和end参数的格式有明确要求,直接传datetime或Timestamp对象容易因为格式/时区问题报错,以下是可行的解决方式:

  • 将日期对象转为"YYYY-MM-DD"格式字符串
    这是最稳妥的方式,不管是datetime还是Timestamp对象,都可以通过字符串格式化解决:

    # 处理datetime对象
    from datetime import datetime
    import yfinance as yf
    
    start_dt = datetime(2023, 1, 1)
    end_dt = datetime(2023, 12, 31)
    data = yf.download("AAPL", start=start_dt.strftime("%Y-%m-%d"), end=end_dt.strftime("%Y-%m-%d"))
    
    # 处理Timestamp对象
    import pandas as pd
    import yfinance as yf
    
    start_ts = pd.Timestamp("2023-01-01")
    end_ts = pd.Timestamp("2023-12-31")
    data = yf.download("AAPL", start=str(start_ts.date()), end=str(end_ts.date()))
    
  • 直接传入日期字符串
    跳过对象转换环节,直接用"YYYY-MM-DD"格式的字符串作为参数,彻底避免转换问题:

    import yfinance as yf
    data = yf.download("AAPL", start="2023-01-01", end="2023-12-31")
    
  • 处理时区问题
    如果你的datetime/Timestamp对象带有时区信息,先移除时区再转换格式:

    from datetime import datetime, timezone
    import yfinance as yf
    
    start_dt = datetime(2023, 1, 1, tzinfo=timezone.utc)
    # 移除时区转为 naive datetime
    start_naive = start_dt.replace(tzinfo=None)
    data = yf.download("AAPL", start=start_naive.strftime("%Y-%m-%d"), end="2023-12-31")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:45:30