有没有一种简单的方法来获取olain JavaScript日期(例如今天)并返回X天?

例如,如果我想计算今天前5天的日期。


当前回答

function daysSinceGivenDate (date) {
  const dateInSeconds = Math.floor((new Date().valueOf() - date.valueOf()) / 1000);
  const oneDayInSeconds = 86400;

  return Math.floor(dateInSeconds / oneDayInSeconds); // casted to int
};

console.log(daysSinceGivenDate(new Date())); // 0
console.log(daysSinceGivenDate(new Date("January 1, 2022 03:24:00"))); // relative...

其他回答

var my date = new Date().toISOString().substring(0, 10);

它只能给你2014-06-20这样的日期。希望会有所帮助

我注意到getDays+X在日/月范围内不起作用。只要您的日期不早于1970年,就可以使用getTime。

var todayDate = new Date(), weekDate = new Date();
weekDate.setTime(todayDate.getTime()-(7*24*3600000));

一些现有的解决方案很接近,但并不完全符合我的要求。此函数可处理正值或负值,并处理边界情况。

function addDays(date, days) {
    return new Date(
        date.getFullYear(),
        date.getMonth(),
        date.getDate() + days,
        date.getHours(),
        date.getMinutes(),
        date.getSeconds(),
        date.getMilliseconds()
    );
}
function daysSinceGivenDate (date) {
  const dateInSeconds = Math.floor((new Date().valueOf() - date.valueOf()) / 1000);
  const oneDayInSeconds = 86400;

  return Math.floor(dateInSeconds / oneDayInSeconds); // casted to int
};

console.log(daysSinceGivenDate(new Date())); // 0
console.log(daysSinceGivenDate(new Date("January 1, 2022 03:24:00"))); // relative...

get moment.js。所有酷孩子都使用它。它有更多的格式选项等。在哪里

var n = 5;
var dateMnsFive = moment(<your date>).subtract(n , 'day');

可选择的转换为JS Date obj以进行角度绑定。

var date = new Date(dateMnsFive.toISOString());

可选择的总体安排

var date = dateMnsFive.format("YYYY-MM-DD");