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

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


当前回答

使用MomentJS。

函数getXDaysBeforeDate(referenceDate,x){return moment(referenceDate).减去(x,'day').格式('MMMM Do YYYY,h:mm:ss a');}var yourDate=新日期();//就说今天吧var valueOfX=7;//假设7天前console.log(getXDaysBeforeDate(yourDate,valueOfX));<script src=“https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js“></script>

其他回答

尝试以下操作:

 var d = new Date();
 d.setDate(d.getDate()-5);

注意,这将修改日期对象并返回更新日期的时间值。

var d=新日期();document.write('今天是:'+d.toLocaleString());d.setDate(d.getDate()-5);document.write('<br>5天前是:'+d.toLocaleString());

要计算比全天更精确的相对时间戳,可以使用Date.getTime()和Date.setTime()来处理表示自1970年1月1日以来的毫秒数的整数。例如,如果你想知道现在是17小时后:

const msSinceEpoch=(new Date()).getTime();constfortyEightHoursLater=新日期(msSinceEpoch+48*60*60*1000).toLocaleString();constfortyEightHoursEarlier=新日期(msSinceEpoch-48*60*60*1000).toLocaleString();const fiveDaysAgo=新日期(msSinceEpoch-120*60*60*1000).toLocaleString();console.log({msSinceEpoch,fortyEightHoursLater,fortyEightHoursEarlier,fiveDaysAgo})

参考

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

function addDays(date, days) {
    return new Date(
        date.getFullYear(),
        date.getMonth(),
        date.getDate() + days,
        date.getHours(),
        date.getMinutes(),
        date.getSeconds(),
        date.getMilliseconds()
    );
}

设置日期时,日期转换为毫秒,因此需要将其转换回日期:

这种方法还考虑了新年变化等因素。

function addDays( date, days ) {
    var dateInMs = date.setDate(date.getDate() - days);
    return new Date(dateInMs);
}

var date_from = new Date();
var date_to = addDays( new Date(), parseInt(days) );

它是这样的:

var d = new Date(); // today!
var x = 5; // go back 5 days!
d.setDate(d.getDate() - x);