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

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


当前回答

var dateOffset = (24*60*60*1000) * 5; //5 days
var myDate = new Date();
myDate.setTime(myDate.getTime() - dateOffset);

如果您在整个web应用程序中执行大量令人头疼的日期操作,DateJS将使您的生活更加轻松:

http://simonwillison.net/2007/Dec/3/datejs/

其他回答

我为Date制作了这个原型,这样我就可以传递负值来减去天数,传递正值来添加天数。

if(!Date.prototype.adjustDate){
    Date.prototype.adjustDate = function(days){
        var date;

        days = days || 0;

        if(days === 0){
            date = new Date( this.getTime() );
        } else if(days > 0) {
            date = new Date( this.getTime() );

            date.setDate(date.getDate() + days);
        } else {
            date = new Date(
                this.getFullYear(),
                this.getMonth(),
                this.getDate() - Math.abs(days),
                this.getHours(),
                this.getMinutes(),
                this.getSeconds(),
                this.getMilliseconds()
            );
        }

        this.setTime(date.getTime());

        return this;
    };
}

因此,为了使用它,我可以简单地写下:

var date_subtract = new Date().adjustDate(-4),
    date_add = new Date().adjustDate(4);

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

请参见以下代码,从当前日期减去天数。此外,根据减去的日期设置月份。

var today = new Date();
var substract_no_of_days = 25;

today.setTime(today.getTime() - substract_no_of_days* 24 * 60 * 60 * 1000);
var substracted_date = (today.getMonth()+1) + "/" +today.getDate() + "/" + today.getFullYear();

alert(substracted_date);

我发现getDate()/setDate()方法的一个问题是,它太容易将所有内容转换为毫秒,而且语法有时我很难理解。

相反,我喜欢处理1天=86400000毫秒的事实。

因此,对于您的特定问题:

today = new Date()
days = 86400000 //number of milliseconds in a day
fiveDaysAgo = new Date(today - (5*days))

就像一个魅力。

我一直使用这种方法进行30/60/365天的滚动计算。

您可以很容易地推断出这一点,以创建月、年等的时间单位。

使用现代JavaScript函数语法

const getDaysPastDate=(daysBefore,date=new date)=>新日期(date-(1000*60*60*24*daysBefore));console.log(getDaysPastDate(1));//昨天