Flutter中如何用for循环获取过去15天日期批量调用API
for循环生成逐日API日期区间的实现方案
核心逻辑
不需要计算复杂的日期差,直接以第一次请求的end日期为循环起点,每次向前偏移1天生成对应区间,固定迭代15次即可完全匹配需求。
步骤拆解
- 确定基准值:第一次请求的end参数为固定参考日期,比如示例中的
2021-03-20 - 固定循环次数为15次,单轮迭代执行以下操作:
- 取当前迭代的日期值作为end参数
- 将当前日期向前偏移1天,作为start参数
- 按照指定格式拼接API请求地址
- 发起本次API调用
- 将当前迭代日期向前偏移1天,进入下一轮循环
- 格式校验:所有日期输出必须统一为YYYY-MM-DD格式,月、日数值不足两位时补前导0,避免出现类似
2021-03-9这类不规范的参数值,防止API接口解析失败
通用实现代码(JS版本,其他语言逻辑完全一致)
// 初始化基准日期:第一次请求的end值 let currentEnd = new Date('2021-03-20'); // 循环执行15次API调用 for (let loopIndex = 0; loopIndex < 15; loopIndex++) { // 计算前一天的日期作为start值 const currentStart = new Date(currentEnd); currentStart.setDate(currentEnd.getDate() - 1); // 格式化为标准YYYY-MM-DD格式 const formattedStart = formatDate(currentStart); const formattedEnd = formatDate(currentEnd); // 拼接完整请求地址 const requestUrl = `https://api?start=${formattedStart}&end=${formattedEnd}`; // 执行API调用逻辑 console.log(`第${loopIndex + 1}次请求地址:${requestUrl}`); // 日期向前偏移1天,准备下一轮循环 currentEnd.setDate(currentEnd.getDate() - 1); } /** * 日期格式化工具函数 * @param {Date} date 日期对象 * @returns {string} 格式化后的YYYY-MM-DD字符串 */ function formatDate(date) { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; }
输出效果
运行代码后会按顺序生成15个符合要求的请求地址,依次为:
https://api?start=2021-03-19&end=2021-03-20https://api?start=2021-03-18&end=2021-03-19https://api?start=2021-03-17&end=2021-03-18- ...
- 第15次请求地址:
https://api?start=2021-03-05&end=2021-03-06
内容的提问来源于stack exchange,提问作者rameez khan
相关产品推荐
相关产品推荐

