我需要能够添加1,2,5或10天到今天的日期使用jQuery。


当前回答

这里公认的答案给了我不可预测的结果,有时会奇怪地加上月和年。

我能找到的最可靠的方法就是在这里 将日期添加到Javascript Date对象,并增加月份

var dayOffset = 20;
var millisecondOffset = dayOffset * 24 * 60 * 60 * 1000;
december.setTime(december.getTime() + millisecondOffset); 

编辑:尽管它对一些人有效,但我不认为它是完全正确的。我建议你用一个更流行的答案,或者使用http://momentjs.com/这样的东西


其他回答

Krishna Chytanya的原型解决方案非常好,但需要一个微小但重要的改进。 days参数必须解析为Integer,以避免当days是“1”这样的字符串时进行奇怪的计算。(我花了好几个小时才弄清楚我的申请出了什么问题。)

Date.prototype.addDays = function(days) {
    this.setDate(this.getDate() + parseInt(days));
    return this;
};

即使你不使用这个原型函数: 当使用setDate()时,一定要确保有一个Integer。

我发现JavaScript可以返回一个正确的日期,当你使用新的日期(nYear, nMonth, nDate);那个月的最后几天。 当你使用这个函数时,试着看看dDate变量的结果:

var dDate = new Date(2012, 0,34);//结果是2月3日2012


我有一个SkipDate函数来分享:

    function DaysOfMonth(nYear, nMonth) {
        switch (nMonth) {
            case 0:     // January
                return 31; break;
            case 1:     // February
                if ((nYear % 4) == 0) {
                    return 29;
                }
                else {
                    return 28;
                };
                break;
            case 2:     // March
                return 31; break;
            case 3:     // April
                return 30; break;
            case 4:     // May
                return 31; break;
            case 5:     // June
                return 30; break;
            case 6:     // July
                return 31; break;
            case 7:     // August
                return 31; break;
            case 8:     // September
                return 30; break;
            case 9:     // October
                return 31; break;
            case 10:     // November
                return 30; break;
            case 11:     // December
                return 31; break;
        }
    };

    function SkipDate(dDate, skipDays) {
        var nYear = dDate.getFullYear();
        var nMonth = dDate.getMonth();
        var nDate = dDate.getDate();
        var remainDays = skipDays;
        var dRunDate = dDate;

        while (remainDays > 0) {
            remainDays_month = DaysOfMonth(nYear, nMonth) - nDate;
            if (remainDays > remainDays_month) {
                remainDays = remainDays - remainDays_month - 1;
                nDate = 1;
                if (nMonth < 11) { nMonth = nMonth + 1; }
                else {
                    nMonth = 0;
                    nYear = nYear + 1;
                };
            }
            else {
                nDate = nDate + remainDays;
                remainDays = 0;
            };
            dRunDate = Date(nYear, nMonth, nDate);
        }
        return new Date(nYear, nMonth, nDate);
    };

[更新]在你继续之前考虑阅读这篇文章…

Moment.js

从这里安装moment.js。

NPM: $ NPM I——节省时间

Bower: $ Bower install—节省时间

接下来,

var date = moment()
            .add(2,'d') //replace 2 with number of days you want to add
            .toDate(); //convert it to a Javascript Date Object if you like

链接编号:http://momentjs.com/docs/#/manipulating/add/

Moment.js是一个非常棒的管理Date对象的Javascript库

祝你好运。

Date.prototype.addDays = function(days)
{
    var dat = new Date(this.valueOf() + days * 24 * 60 * 60 * 1000 );
    return dat;
}

纯JS解决方案,具有日期格式YYYY-mm-dd格式

var someDate = new Date('2014-05-14'); someDate.setDate(someDate.getDate() + 15);//要加的天数,例如15天 var dateformatting = someDate.toISOString().substr(0,10); console.log (dateformat);