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

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


当前回答

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

其他回答

尝试以下操作:

 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());

将日期拆分为多个部分,然后返回一个具有调整值的新日期

function DateAdd(date, type, amount){
    var y = date.getFullYear(),
        m = date.getMonth(),
        d = date.getDate();
    if(type === 'y'){
        y += amount;
    };
    if(type === 'm'){
        m += amount;
    };
    if(type === 'd'){
        d += amount;
    };
    return new Date(y, m, d);
}

记住,月份是以零为基础的,但日子不是。即新日期(2009,1,1)==2009年2月1日,新日期(2009,1,0)==2009年1月31日;

它是这样的:

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

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

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

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

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

就像一个魅力。

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

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

var date=新日期();var day=date.getDate();var mnth=date.getMonth()+1;var fDate=day+'/'+mnth+'/'+date.getFullYear();document.write('今天是:'+fDate);var subDate=date.setDate(date.getDate()-1);var todate=新日期(subDate);var today=todate.getDate();var tomnth=todate.getMonth()+1;var endDate=today+'/'+tomnthe+'/'+todate.getFullYear();document.write('<br>1天前是:'+endDate);