如何在今天的date添加天数?

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

你可以使用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; 

你可以像这样扩展javascriptdate对象

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

为什么不简单使用

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

或-5删除5天

这是5天:

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

你不需要JQuery,你可以在Javascript中做到这一点,希望你得到它。

Krishna Chytanya的原型解决scheme是非常好的,但需要一个小而重要的改进。 天的参数必须被parsing为整数,以避免奇怪的计算时,天是一个像“1”的string。 (我需要几个小时才能知道,在我的申请中出了什么问题。)

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

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

Moment.js

从这里安装moment.js

npm$ npm i --save moment

鲍尔 :$ 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库来pipe理date对象,并在40kb重量非常轻。

祝你好运。

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

我find的最可靠的方法是在这里find了添加date到Javascriptdate对象,并增加月份

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

编辑:即使它已经为一些人工作,我不认为这是完全正确的。 我会build议去与更stream行的答案或使用像http://momentjs.com/


纯JS解决scheme,date格式为YYYY-mm-dd格式

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

你可以使用这个库“ Datejs开源JavaScriptdate库”。

我发现这是一个JavaScript的痛苦。 看看这个链接,帮助我。 你有没有想过扩展date对象。

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

如果date中的时间不需要,那么您可以简单地使用date对象的方法来提取月份,年份和date,并将“n”天数添加到date部分。

 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

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

我发现JavaScript在使用new Date(nYear, nMonth, nDate);时可以返回正确的datenew Date(nYear, nMonth, nDate); 那个月的那几天 尝试使用此dDate查看dDatevariables的结果:

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

这是一个为我工作的解决scheme。

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

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

例如,今天添加5天:

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

您也可以按小时,月份等添加。 请参阅更多信息。