Je dois pouvoir ajouter 1, 2, 5 ou 10 jours à la date d'aujourd'hui en utilisant jQuery.
Vous pouvez utiliser JavaScript, pas besoin de jQuery:
var someDate = new Date();
var numberOfDaysToAdd = 6;
someDate.setDate(someDate.getDate() + numberOfDaysToAdd);
Formater en dd/mm/yyyy
:
var dd = someDate.getDate();
var mm = someDate.getMonth() + 1;
var y = someDate.getFullYear();
var someFormattedDate = dd + '/'+ mm + '/'+ y;
Vous pouvez étendre l'objet Date javascript comme ceci
Date.prototype.addDays = function(days) {
this.setDate(this.getDate() + parseInt(days));
return this;
};
et dans votre code javascript, vous pouvez appeler
var currentDate = new Date();
// to add 4 days to current date
currentDate.addDays(4);
Pourquoi ne pas simplement utiliser
function addDays(theDate, days) {
return new Date(theDate.getTime() + days*24*60*60*1000);
}
var newDate = addDays(new Date(), 5);
ou -5 pour enlever 5 jours
C'est pour 5 jours:
var myDate = new Date(new Date().getTime()+(5*24*60*60*1000));
Vous n'avez pas besoin de JQuery, vous pouvez le faire en JavaScript, j'espère que vous l'obtiendrez.
Moment.js
Installez moment.js
à partir de ici .
npm : $ npm i --save moment
Bower : $ bower install --save moment
Prochain,
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
Lien de référence: http://momentjs.com/docs/#/manipulating/add/
Moment.js
est une bibliothèque Javascript incroyable pour gérer des objets Date et extrêmement léger à 40kb
.
Bonne chance.
Le prototype de solution de Krishna Chytanya est très gentil, mais nécessite une amélioration mineure mais importante. Le paramètre days doit être analysé en tant que Integer pour éviter des calculs étranges lorsque days est une chaîne telle que "1". (J'ai eu besoin de plusieurs heures pour savoir ce qui n'allait pas dans ma candidature.)
Date.prototype.addDays = function(days) {
this.setDate(this.getDate() + parseInt(days));
return this;
};
Même si vous n’utilisez pas cette fonction prototype: Assurez-vous toujours d’avoir un Integer lorsque vous utilisez setDate ().
La réponse acceptée ici m'a donné des résultats imprévisibles, ajoutant parfois étrangement des mois et des années.
Le moyen le plus fiable que j'ai pu trouver a été trouvé ici Ajoute jours à l'objet Date Javascript, et aussi incrémente mois
var dayOffset = 20;
var millisecondOffset = dayOffset * 24 * 60 * 60 * 1000;
december.setTime(december.getTime() + millisecondOffset);
EDIT: Même si cela a fonctionné pour certaines personnes, je ne pense pas que ce soit tout à fait correct. Je recommanderais d'aller avec une réponse plus populaire ou d'utiliser quelque chose comme http://momentjs.com/
Solution Pure JS, avec format de date YYYY-mm-jj
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);
Date.prototype.addDays = function(days)
{
var dat = new Date(this.valueOf() + days * 24 * 60 * 60 * 1000 );
return dat;
}
Si les heures dans la Date ne sont pas nécessaires, vous pouvez simplement utiliser les méthodes de l'objet Date pour extraire le mois, l'année et le jour et ajouter "n" nombre de jours à la partie Jour.
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)
Réf: Mozilla Javascript GetDate
Edit: Ref: Date JavaScript JavaScript
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);
Vous pouvez utiliser cette bibliothèque " Datejs Bibliothèque de dates JavaScript open-source".
J'ai trouvé que c'était une douleur en javascript. Découvrez ce lien qui m'a aidé. Avez-vous déjà pensé à prolonger l'objet de 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);
};
vous pouvez essayer ceci et vous n'avez pas besoin de JQuery: timeSolver.js
Par exemple, ajoutez 5 jours aujourd'hui:
var newDay = timeSolver.add(new Date(),5,"day");
Vous pouvez également ajouter par heure, par mois, etc. s'il vous plaît voir pour plus d'informations.
Voici une solution qui a fonctionné pour moi.
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);
}
J'ai trouvé que JavaScript peut renvoyer une date correcte lorsque vous utilisez new Date(nYear, nMonth, nDate);
avec les jours de fermeture de ce mois. Essayez de voir le résultat d'une variable dDate
lorsque vous utilisez ceci:
var dDate = new Date(2012, 0, 34); // the result is 3 Feb 2012
J'ai une fonction SkipDate à partager:
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);
};