首页 > 解决方案 > 如何更新 API URL 查询字符串中的日期变量

问题描述

我正在使用 fetch API 从服务器检索一些 JSON 数据。

fetch 调用看起来像这样,它依赖于查询字符串中的当前日期来返回当前日期的数据。

fetch(`https://www.some-url/apps/bookings/calendar-json.php?todayDate=${year}-${month}-${day}`)
  .then(r => r.json)... ``

返回的数据本质上显示了 API url 中设置的当前日期的可用预订。

我想要一组控件,允许用户将日期增加或减少 1 天,以通过获取新数据来显示该特定日期的预订。为此,我将获取 ISO 格式的当前日期(如下所示),然后将年、月、日拆分为单独的变量并在 API 查询字符串中使用这些变量。-

const date = new Date();
const isoFormat = date.toISOString();
const currentDate = isoFormat.substr(0,10);

从那里,是否可以通过递增/递减操作日期变量以在 API URL 中获取前几天或后几天的日期?我想有点像计数器。

还是有更好的方法来处理这个问题?像 moment.js 之类的包?

标签: javascriptapidatefetchquery-string

解决方案


如果你想增加/减少日期,更容易使用单独的变量,年,月和日:

let today = new Date();
let yyyy = today.getFullYear();
let mm = today.getMonth()+1; // getMonth() is zero-based
let dd  = today.getDate();

或者你可以直接使用日期对象,

let offsetByDays = (24*60*60*1000) * 2; //2 days
let date= new Date();
date.setTime(date.getTime() - offsetByDays );
let formattedDate = date.toISOString().slice(0,10);

对于 moment.js,请参阅:momentJS 日期字符串添加 5 天

注意:您在使用时也必须考虑时区.toISOString()


推荐阅读