You need to enable JavaScript to run this app. Python如何实现API特殊格式日期参数的自动递增调用?
优惠活动
大模型
产品
解决方案
定价
更多

Python如何实现API特殊格式日期参数的自动递增调用?

实现方案

直接使用Python标准库datetime即可完成需求,该格式对应官方原生格式符%a %b %d %Y,无需手动拼接字符串处理星期、月份缩写。

核心逻辑

  1. 将日期统一用datetime对象处理,避免字符串计算的各种边界问题(比如月末、闰年跳转)
  2. 使用timedelta(days=n)完成按天递增的逻辑
  3. 调用API前用strftime方法将datetime对象转为要求的字符串格式即可

可直接运行的示例代码

from datetime import datetime, timedelta
import requests
import json

# 配置项
API_URL = "替换为你的API地址"
# 拉取起始日期,可根据需求修改
START_DATE = datetime(year=2021, month=5, day=12)
# 拉取终止日期,可根据需求修改
END_DATE = datetime(year=2021, month=12, day=31)
# 单次拉取的时间跨度,示例和你给出的参数一致为7天,按天拉取的话设为0即可
FETCH_SPAN_DAYS = 6

current_from = START_DATE
while current_from <= END_DATE:
    # 计算当前次拉取的to日期
    current_to = current_from + timedelta(days=FETCH_SPAN_DAYS)
    # 转为API要求的日期格式
    from_date_str = current_from.strftime("%a %b %d %Y")
    to_date_str = current_to.strftime("%a %b %d %Y")
    # 构造请求参数
    params = (
        ('fromDate', from_date_str),
        ('toDate', to_date_str),
    )
    try:
        # 调用API
        resp = requests.get(API_URL, params=params)
        resp.raise_for_status()
        api_data = resp.json()
        # 这里添加你把api_data存入数据库的逻辑
        print(f"成功拉取 {from_date_str} 至 {to_date_str} 的数据,共{len(api_data)}条")
    except Exception as e:
        print(f"拉取 {from_date_str} 至 {to_date_str} 的数据失败:{str(e)}")
        # 可根据需求添加重试或者记录断点的逻辑,下次从失败的日期开始拉
        break
    # 日期递增,进入下一个周期
    current_from = current_to + timedelta(days=1)

补充说明

  • 如果你初始的日期是字符串格式(比如Wed May 12 2021),可以用datetime.strptime("Wed May 12 2021", "%a %b %d %Y")先转成datetime对象再处理
  • 如果API要求UTC时间,生成日期时统一使用UTC时区的datetime对象即可,避免时差导致的日期偏移
  • 可以在异常分支添加断点记录逻辑,拉取失败后下次可以直接从失败的日期继续,无需从头重复拉取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 12:51:00