首页 文章

如何在今天的日期添加天数? [重复]

提问于
浏览
257

这个问题在这里已有答案:

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

16 回答

  • 16

    你可以使用JavaScript,不需要jQuery:

    var someDate = new Date();
    var numberOfDaysToAdd = 6;
    someDate.setDate(someDate.getDate() + numberOfDaysToAdd);
    

    格式为 dd/mm/yyyy

    var dd = someDate.getDate();
    var mm = someDate.getMonth() + 1;
    var y = someDate.getFullYear();
    
    var someFormattedDate = dd + '/'+ mm + '/'+ y;
    
  • 89

    您可以像这样扩展javascript Date对象

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

    并在您的javascript代码中,您可以调用

    var currentDate = new Date();
    // to add 4 days to current date
    currentDate.addDays(4);
    
  • 8

    为什么不简单地使用

    function addDays(theDate, days) {
        return new Date(theDate.getTime() + days*24*60*60*1000);
    }
    
    var newDate = addDays(new Date(), 5);
    

    或-5删除5天

  • 0

    这是5天:

    var myDate = new Date(new Date().getTime()+(5*24*60*60*1000));
    

    你不需要JQuery,你可以在JavaScript中完成它,希望你能得到它 .

  • 4

    Moment.js

    here安装 moment.js .

    npm$ npm i --save moment

    Bower :$ bower install --save moment

    下一个,

    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 是一个令人惊叹的Javascript库,可以在 40kb 管理Date对象和极轻的权重 .

    祝好运 .

  • 0

    来自Krishna Chytanya的原型解决方案非常好,但需要一个小的但重要的改进 . 必须将days param解析为Integer,以避免在days为类似“1”的字符串时进行奇怪的计算 . (我需要几个小时才能找到,我的申请出了什么问题 . )

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

    即使您不使用此原型功能: Always be sure to have an Integer when using setDate().

  • 4

    这里接受的答案给了我不可预知的结果,有时奇怪地增加了几个月和几年 .

    我能找到的最可靠的方法是在这里找到Add days to Javascript Date object, and also increment month

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

    编辑:虽然它对一些人有用,但我认为这不完全正确 . 我建议使用更受欢迎的答案或使用像http://momentjs.com/这样的东西


  • 432

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

    var someDate = new Date('2014-05-14');
    someDate.setDate(someDate.getDate() + 15); //number  of days to add, e.x. 15 days
    var dateFormated = someDate.toISOString().substr(0,10);
    
  • 9
    Date.prototype.addDays = function(days)
    {
        var dat = new Date(this.valueOf() + days * 24 * 60 * 60 * 1000 );
        return dat;
    }
    
  • 27

    如果不需要日期中的时间,那么您只需使用日期对象的方法来提取月,年和日,并向日部分添加“n”天数 .

    var n=5; //number of days to add. 
    var today=new Date(); //Today's Date
    var requiredDate=new Date(today.getFullYear(),today.getMonth(),today.getDate()+n)
    

    参考:Mozilla Javascript GetDate

    编辑:参考:Mozilla JavaScript Date

  • 68

    您可以使用此库“Datejs开源JavaScript日期库” .

  • 6

    我发现这是javascript的痛苦 . 看看这个帮助我的链接 . 你有没有想过扩展日期对象 .

    http://pristinecoder.com/Blog/post/javascript-formatting-date-in-javascript

    /*
     * Date Format 1.2.3
     * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
     * MIT license
     *
     * Includes enhancements by Scott Trenda <scott.trenda.net>
     * and Kris Kowal <cixar.com/~kris.kowal/>
     *
     * Accepts a date, a mask, or a date and a mask.
     * Returns a formatted version of the given date.
     * The date defaults to the current date/time.
     * The mask defaults to dateFormat.masks.default.
     */
    
    var dateFormat = function () {
        var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
            timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
            timezoneClip = /[^-+\dA-Z]/g,
            pad = function (val, len) {
                val = String(val);
                len = len || 2;
                while (val.length < len) val = "0" + val;
                return val;
            };
    
        // Regexes and supporting functions are cached through closure
        return function (date, mask, utc) {
            var dF = dateFormat;
    
            // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
            if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
                mask = date;
                date = undefined;
            }
    
            // Passing date through Date applies Date.parse, if necessary
            date = date ? new Date(date) : new Date;
            if (isNaN(date)) throw SyntaxError("invalid date");
    
            mask = String(dF.masks[mask] || mask || dF.masks["default"]);
    
            // Allow setting the utc argument via the mask
            if (mask.slice(0, 4) == "UTC:") {
                mask = mask.slice(4);
                utc = true;
            }
    
            var _ = utc ? "getUTC" : "get",
                d = date[_ + "Date"](),
                D = date[_ + "Day"](),
                m = date[_ + "Month"](),
                y = date[_ + "FullYear"](),
                H = date[_ + "Hours"](),
                M = date[_ + "Minutes"](),
                s = date[_ + "Seconds"](),
                L = date[_ + "Milliseconds"](),
                o = utc ? 0 : date.getTimezoneOffset(),
                flags = {
                    d:    d,
                    dd:   pad(d),
                    ddd:  dF.i18n.dayNames[D],
                    dddd: dF.i18n.dayNames[D + 7],
                    m:    m + 1,
                    mm:   pad(m + 1),
                    mmm:  dF.i18n.monthNames[m],
                    mmmm: dF.i18n.monthNames[m + 12],
                    yy:   String(y).slice(2),
                    yyyy: y,
                    h:    H % 12 || 12,
                    hh:   pad(H % 12 || 12),
                    H:    H,
                    HH:   pad(H),
                    M:    M,
                    MM:   pad(M),
                    s:    s,
                    ss:   pad(s),
                    l:    pad(L, 3),
                    L:    pad(L > 99 ? Math.round(L / 10) : L),
                    t:    H < 12 ? "a"  : "p",
                    tt:   H < 12 ? "am" : "pm",
                    T:    H < 12 ? "A"  : "P",
                    TT:   H < 12 ? "AM" : "PM",
                    Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
                    o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
                    S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
                };
    
            return mask.replace(token, function ($0) {
                return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
            });
        };
    }();
    
    // Some common format strings
    dateFormat.masks = {
        "default":      "ddd mmm dd yyyy HH:MM:ss",
        shortDate:      "m/d/yy",
        mediumDate:     "mmm d, yyyy",
        longDate:       "mmmm d, yyyy",
        fullDate:       "dddd, mmmm d, yyyy",
        shortTime:      "h:MM TT",
        mediumTime:     "h:MM:ss TT",
        longTime:       "h:MM:ss TT Z",
        isoDate:        "yyyy-mm-dd",
        isoTime:        "HH:MM:ss",
        isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
        isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
    };
    
    // Internationalization strings
    dateFormat.i18n = {
        dayNames: [
            "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
            "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
        ],
        monthNames: [
            "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
            "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
        ]
    };
    
    // For convenience...
    Date.prototype.format = function (mask, utc) {
        return dateFormat(this, mask, utc);
    };
    
  • 4
    function addDays(n){
        var t = new Date();
        t.setDate(t.getDate() + n); 
        var month = "0"+(t.getMonth()+1);
        var date = "0"+t.getDate();
        month = month.slice(-2);
        date = date.slice(-2);
         var date = date +"/"+month +"/"+t.getFullYear();
        alert(date);
    }
    
    addDays(5);
    
  • 30

    我发现当你使用 new Date(nYear, nMonth, nDate); 时,JavaScript可以返回正确的日期 . 使用它时,尝试查看 dDate 变量的结果:

    var dDate = new Date(2012, 0, 34); // the result is 3 Feb 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);
        };
    
  • 0

    这是一个适合我的解决方案 .

    function calduedate(ndays){
    
        var newdt = new Date(); var chrday; var chrmnth;
        newdt.setDate(newdt.getDate() + parseInt(ndays));
    
        var newdate = newdt.getFullYear();
        if(newdt.getMonth() < 10){
            newdate = newdate+'-'+'0'+newdt.getMonth();
        }else{
            newdate = newdate+'-'+newdt.getMonth();
        }
        if(newdt.getDate() < 10){
            newdate = newdate+'-'+'0'+newdt.getDate();
        }else{
            newdate = newdate+'-'+newdt.getDate();
        }
    
        alert("newdate="+newdate);
    
    }
    
  • 50

    你可以尝试这个,不需要JQuery:timeSolver.js

    例如,今天添加5天:

    var newDay = timeSolver.add(new Date(),5,"day");
    

    你也可以按小时,月等添加 . 请参阅更多信息 .

相关问题