How to add number of days to today's date?
我需要能够使用jQuery在今天的日期添加1,2,5或10天。
你可以使用JavaScript,不需要jQuery:
1 2 3 | var someDate = new Date(); var numberOfDaysToAdd = 6; someDate.setDate(someDate.getDate() + numberOfDaysToAdd); |
格式为
1 2 3 4 5 | var dd = someDate.getDate(); var mm = someDate.getMonth() + 1; var y = someDate.getFullYear(); var someFormattedDate = dd + '/'+ mm + '/'+ y; |
您可以像这样扩展javascript Date对象
1 2 3 4 | Date.prototype.addDays = function(days) { this.setDate(this.getDate() + parseInt(days)); return this; }; |
并在您的javascript代码中,您可以调用
1 2 3 | var currentDate = new Date(); // to add 4 days to current date currentDate.addDays(4); |
为什么不简单地使用
1 2 3 4 5 | function addDays(theDate, days) { return new Date(theDate.getTime() + days*24*60*60*1000); } var newDate = addDays(new Date(), 5); |
或-5删除5天
这是5天:
1 | var myDate = new Date(new Date().getTime()+(5*24*60*60*1000)); |
你不需要JQuery,你可以在JavaScript中完成它,希望你能得到它。
Moment.js
从这里安装
npm:
凉亭:$
下一个,
1 2 3 | 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/
祝好运。
来自Krishna Chytanya的原型解决方案非常好,但需要一个小的但重要的改进。
必须将days param解析为Integer,以避免在days为类似"1"的字符串时进行奇怪的计算。 (我需要几个小时才能找到,我的申请出了什么问题。)
1 2 3 4 | Date.prototype.addDays = function(days) { this.setDate(this.getDate() + parseInt(days)); return this; }; |
即使你不使用这个原型功能:
使用setDate()时务必确保有一个Integer。
这里接受的答案给了我不可预知的结果,有时奇怪地增加了几个月和几年。
我找到的最可靠的方法是在这里找到的
添加Javascript Date对象的天数,也增加月份
1 2 3 | var dayOffset = 20; var millisecondOffset = dayOffset * 24 * 60 * 60 * 1000; december.setTime(december.getTime() + millisecondOffset); |
编辑:虽然它对一些人有用,但我认为这不完全正确。我建议使用更流行的答案或使用像http://momentjs.com/这样的东西
纯JS解决方案,日期格式为YYYY-mm-dd格式
1 2 3 | 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); |
如果不需要日期中的时间,那么您只需使用日期对象的方法来提取月,年和日,并向日部分添加"n"天数。
1 2 3 | 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日期
1 2 3 4 5 | Date.prototype.addDays = function(days) { var dat = new Date(this.valueOf() + days * 24 * 60 * 60 * 1000 ); return dat; } |
1 2 3 4 5 6 7 8 9 10 11 12 | 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的痛苦。看看这个帮助我的链接。你有没有想过扩展日期对象。
http://pristinecoder.com/Blog/post/javascript-formatting-date-in-javascript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | /* * 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); }; |
您可以使用此库"Datejs开源JavaScript日期库"。
你可以尝试这个,不需要JQuery:timeSolver.js
例如,今天添加5天:
1 | var newDay = timeSolver.add(new Date(),5,"day"); |
你也可以按小时,月等添加。
请参阅更多信息。
这是一个适合我的解决方案。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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); } |
我发现当你在那个月的过了几天使用
使用它时,尝试查看
我有一个SkipDate函数可以分享:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 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); }; |