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

如何在API URL查询字符串中更新日期变量实现跨日期数据拉取

原生 Date 对象完全可以实现日期增减需求,不需要拆分 ISO 字符串手动修改年、月、日,也能自动处理跨月、跨年、闰年等边界情况,不用自己做兼容逻辑。

原生实现方案

核心逻辑是直接操作 Date 实例的日期值,再格式化为接口需要的 YYYY-MM-DD 格式即可:

// 日期格式化函数,输出 YYYY-MM-DD 格式
// 如果接口需要UTC日期,把下面的get方法替换为getUTC*版本即可:getUTCFullYear、getUTCMonth、getUTCDate
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}`
}

// 初始化当前日期变量
let currentDate = new Date()

// 日期增减封装
function adjustDate(dayOffset) {
  currentDate.setDate(currentDate.getDate() + dayOffset)
  const targetDateStr = formatDate(currentDate)
  // 调用拉取数据逻辑
  fetchBookings(targetDateStr)
}

// 拉取预约数据
function fetchBookings(dateStr) {
  fetch(`https://www.some-url/apps/bookings/calendar-json.php?todayDate=${dateStr}`)
    .then(res => res.json())
    .then(bookingData => {
      // 渲染预约时段逻辑
    })
}

使用的时候,加1天调用 adjustDate(1),减1天调用 adjustDate(-1) 即可,完全符合你要的计数器式操作效果。

注意:toISOString() 输出的是UTC时间的字符串,如果你所在时区和UTC有偏移(比如中国时区是UTC+8),直接截取前10位可能会出现日期差1天的问题,所以更推荐自己写格式化函数,按需使用本地时间或者UTC时间生成日期字符串。

第三方库选择建议

moment.js 目前已经被官方标记为停止新增功能,仅做维护的项目,不推荐新项目引入。
如果你的需求只有简单的日期加减、格式化,用原生方案就足够,不需要额外引入库增加项目体积。如果后续有更复杂的日期处理需求(比如时区转换、相对时间计算、多语言格式化),可以选择更轻量的替代方案:

  • day.js:API 设计和 moment.js 几乎一致,核心体积只有2KB,支持按需引入插件扩展功能
  • date-fns:函数式设计的日期库,支持按需引入方法,打包体积可控

内容的提问来源于stack exchange,提问作者i-am-niall

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:24:02