如何更新 API URL 查询字符串中的日期变量
How can I update a date variable in an API URL query string
我正在使用提取 API 从服务器检索一些 JSON 数据。
获取调用看起来像这样,它依赖于查询字符串中的当前日期到return当前日期的数据。
fetch(`https://www.some-url/apps/bookings/calendar-json.php?todayDate=${year}-${month}-${day}`)
.then(r => r.json)... ``
数据 returned 基本上显示了 API url 中设置的当前日期的可用预订。
我想要一组控件,允许用户将日期递增或递减 1 天,以通过获取新数据来显示该特定日期的预订。为此,我打算获取 ISO 格式的当前日期(如下所示),然后将年、月、日拆分为单独的变量,并在 API 查询字符串中使用它们。 -
const date = new Date();
const isoFormat = date.toISOString();
const currentDate = isoFormat.substr(0,10);
从那里,是否可以通过 increment/decrement 操纵日期变量以获取 API URL 中的前几天或后几天的日期?我想有点像计数器。
或者是否有更好的方法来处理这个问题?像 moment.js 之类的包裹?
如果要 increment/decrement 日期,使用单独的变量来表示年月日会更容易:
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 date string add 5 days
注意:您在使用 .toISOString()
时也考虑到了时区。
我通过创建一组控件 increment/decrement 日期来解决这个问题。我使用上面的答案之一来帮助实现这一目标。我没有将日、月、年拆分为各自的变量,而是将其保留为一个变量。
let date = new Date();
let today = date.setTime(date.getTime());
let day = 24 * 60 * 60 * 1000;
let dateVal;
let urlDate;
next.addEventListener("click", (e) => {
dateVal = today += day;
urlDate = new Date(dateVal);
let formattedDate = urlDate.toISOString().slice(0, 10);
console.log(formattedDate);
});
prev.addEventListener("click", (e) => {
dateVal = today -= day;
urlDate = new Date(dateVal);
let formattedDate = urlDate.toISOString().slice(0, 10);
console.log(formattedDate);
});
我正在使用提取 API 从服务器检索一些 JSON 数据。
获取调用看起来像这样,它依赖于查询字符串中的当前日期到return当前日期的数据。
fetch(`https://www.some-url/apps/bookings/calendar-json.php?todayDate=${year}-${month}-${day}`)
.then(r => r.json)... ``
数据 returned 基本上显示了 API url 中设置的当前日期的可用预订。
我想要一组控件,允许用户将日期递增或递减 1 天,以通过获取新数据来显示该特定日期的预订。为此,我打算获取 ISO 格式的当前日期(如下所示),然后将年、月、日拆分为单独的变量,并在 API 查询字符串中使用它们。 -
const date = new Date();
const isoFormat = date.toISOString();
const currentDate = isoFormat.substr(0,10);
从那里,是否可以通过 increment/decrement 操纵日期变量以获取 API URL 中的前几天或后几天的日期?我想有点像计数器。
或者是否有更好的方法来处理这个问题?像 moment.js 之类的包裹?
如果要 increment/decrement 日期,使用单独的变量来表示年月日会更容易:
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 date string add 5 days
注意:您在使用 .toISOString()
时也考虑到了时区。
我通过创建一组控件 increment/decrement 日期来解决这个问题。我使用上面的答案之一来帮助实现这一目标。我没有将日、月、年拆分为各自的变量,而是将其保留为一个变量。
let date = new Date();
let today = date.setTime(date.getTime());
let day = 24 * 60 * 60 * 1000;
let dateVal;
let urlDate;
next.addEventListener("click", (e) => {
dateVal = today += day;
urlDate = new Date(dateVal);
let formattedDate = urlDate.toISOString().slice(0, 10);
console.log(formattedDate);
});
prev.addEventListener("click", (e) => {
dateVal = today -= day;
urlDate = new Date(dateVal);
let formattedDate = urlDate.toISOString().slice(0, 10);
console.log(formattedDate);
});