Necesito poder agregar 1, 2, 5 o 10 días a la fecha actual usando jQuery.¿Cómo agregar el número de días a la fecha de hoy?
Respuesta
Puede utilizar JavaScript, sin jQuery requiere:
var someDate = new Date();
var numberOfDaysToAdd = 6;
someDate.setDate(someDate.getDate() + numberOfDaysToAdd);
Formateo a dd/mm/yyyy
:
var dd = someDate.getDate();
var mm = someDate.getMonth() + 1;
var y = someDate.getFullYear();
var someFormattedDate = dd + '/'+ mm + '/'+ y;
Se podría ampliar el objeto Date de JavaScript como este
Date.prototype.addDays = function(days) {
this.setDate(this.getDate() + parseInt(days));
return this;
};
y en su código de JavaScript, puede llamar al
var currentDate = new Date();
// to add 4 days to current date
currentDate.addDays(4);
Eso no funcionará ... agregar días tendrá como resultado años y meses extraños. –
@Ferryvandenheuvel: No es cierto. El método propuesto funciona perfectamente bien. –
@Ferryvandenheuvel tenía razón porque la solución de Krishnas necesita una mejora menor pero importante para estar seguro si los días se dan como una cadena en lugar de un número entero: vea mi comentario a continuación http://stackoverflow.com/a/20468397/2732083 –
Se puede usar esta biblioteca "Datejs JavaScript de código abierto Fecha biblioteca".
He encontrado esto como un problema en javascript. Mira este enlace que me ayudó. ¿Alguna vez pensaste en extender el objeto de fecha?
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);
};
Enlace muerto. .. Afortunadamente, la página se guardó en [WayBack Machine] (https://web.archive.org/web/20120329060501/http://www.stevenleath.com/blogengine.web/post/2011/03/09/How- do-I-add-resta-days-in-javascript.aspx). Aunque no hay mucha información útil en la página que la respuesta, es bueno echar un vistazo a la fuente a la que se hace referencia. – Fr0zenFyr
La respuesta aceptada aquí me dio resultados impredecibles, a veces extrañamente adición de meses y años.
La forma más fiable que pude encontrar fue encontrado aquí 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);
EDIT: A pesar de que ha trabajado para algunas personas, no creo que es del todo correcto. Yo recomendaría ir con una respuesta más popular o usar algo como http://momentjs.com/
Esto no funcionará durante días con cambios en el horario de verano. Algunos días no son las 24 horas del día, algunos son 23, otros son 25. No sé qué resultados impredecibles tienes, pero agregar 1 a la propiedad del día (fecha) y dejar que la biblioteca funcione, el resto suele ser el mejor camino. – dalore
Si solo está interesado en saber ** qué día ** podría usar esta solución, asegúrese de que sea la hora 12:00. Sin embargo, debe ignorar el tiempo del resultado, pero el día debería ser el correcto. –
¿Cuáles son los resultados impredecibles? – Sam
encontré que JavaScript puede devolver una fecha correcta cuando se utiliza con el new Date(nYear, nMonth, nDate);
lo largo de días de ese mes. Trate de ver el resultado de una variable dDate
cuando se utiliza este:
var dDate = new Date(2012, 0, 34); // the result is 3 Feb 2012
Tengo una función SkipDate para compartir:
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);
};
No es así como se calcula un año bisiesto; es necesario tener en cuenta% 4,% 100 y% 400 para estar en lo cierto. –
El prototipo de solución de Krishna Chytanya es muy agradable, pero necesita una mejora menor pero importante. Los días param se deben analizar como enteros para evitar cálculos extraños cuando days es una cadena como "1". (Necesitaba varias horas para averiguar, lo que salió mal en mi solicitud.)
Date.prototype.addDays = function(days) {
this.setDate(this.getDate() + parseInt(days));
return this;
};
Incluso si usted no utiliza esta función prototipo: Siempre asegúrese de tener un número entero al utilizar setDate().
Por qué no simplemente usar
function addDays(theDate, days) {
return new Date(theDate.getTime() + days*24*60*60*1000);
}
var newDate = addDays(new Date(), 5);
o -5 para eliminar 5 días
Para devolver una fecha formateada use este **** return (returndate.getMonth() + 1) + "/" + returndate.getDate() + "/" + returndate.getFullYear(); –
esto fallaría dos veces al año debido al cambio de DTS. – jancha
Según el comentario de Jancha con respecto a esta función: Agregar días sobre el límite de DTS le dará un resultado de fecha/hora incorrecto. Por lo tanto, lo mejor es usar una biblioteca de fechas establecida como momentjs. – br2000
Esto es por 5 días:
var myDate = new Date(new Date().getTime()+(5*24*60*60*1000));
Usted no necesita jQuery, puede hacerlo en Javascript, espero que lo entiendas
solución JS puro, con fecha formateada formato AAAA-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);
Excelente ... esp. la forma de formatear que funciona perfectamente en mi caso, sin embargo, puede no ser una solución genérica. – Fr0zenFyr
Date.prototype.addDays = function(days)
{
var dat = new Date(this.valueOf() + days * 24 * 60 * 60 * 1000);
return dat;
}
Si no son necesarios los tiempos a la fecha, a continuación, sólo tiene que utilizar los métodos del objeto fecha a extrae el mes, el año y el día y agrega "n" cantidad de días a la parte del día.
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)
Ref: Mozilla Javascript GetDate
Editar: Ref: Mozilla JavaScript Date
Si ejecuta una función getDate() en requiredDate, el valor devuelto será incorrecto. –
Realmente no @CyrilleArmanger: mira esto http://jsfiddle.net/sahiljambhekar/6u7caake/. También en la variable 'requiredDate' si ejecuta el método getDate(), devolverá el día del mes, que también es correcto. Entonces, por favor, elimine el voto a favor como está trabajando código –
¿Qué pasará cuando today.getDate() === 30? –
Aquí es una solución que funcionó para mí.
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);
}
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);
Moment.js
Instalar moment.js
de here.
NPM: $ npm i --save moment
Bower: $ bower install --save moment
A continuación,
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
Link Ref: http://momentjs.com/docs/#/manipulating/add/
Moment.js
es una librería Javascript increíble para administrar objetos Date y extremadamente livianos al 40kb
.
Buena suerte.
puede probar esto y no necesita jQuery: timeSolver.js
Por ejemplo, añadir 5 día en la actualidad:
var newDay = timeSolver.add(new Date(),5,"day");
También puede agregar por horas, días ... etc. Consulte para obtener más información.
... pero necesitas timeSolver? –
- 1. C# 30 días a partir de la fecha de hoy
- 2. Cómo restar/agregar días de/a una fecha?
- 3. Cómo restar x cantidad de días a partir de la fecha de hoy
- 4. Agregar días a una fecha en Java
- 5. joda time - agregar días de la semana a la fecha
- 6. R Agregar los días a una fecha
- 7. ¿Cómo calcular 8 días hábiles a partir de la fecha de hoy?
- 8. ¿Cómo agregar días a la fecha actual en javascript?
- 9. Cómo agregar el número de días en postgresql datetime
- 10. PostgreSQL: cambiar la fecha por el número aleatorio de días
- 11. MySQL agregar días a una fecha
- 12. Calcular el número de días hábiles entre dos días
- 13. Agregar días hasta la fecha en ActionScript
- 14. Cómo obtener el número total de días en un año a partir de la fecha dada
- 15. Selenium IDE: ¿Cómo obtengo la fecha de hoy?
- 16. PHP: Fecha de "Yesterday", "Hoy"
- 17. ¿Cómo verificar si la fecha de entrada es igual a la fecha de hoy?
- 18. ¿Cómo agregar el número de días a una fecha, considere solo los días hábiles (es decir, ignore los fines de semana)?
- 19. Cómo escribir un script de shell donde agregar días mes y año a la fecha actual
- 20. ¿Cómo saber si la fecha es hoy?
- 21. WPF DatePicker predeterminado a la fecha de hoy
- 22. ¿Cómo agregar días de una columna a una fecha actual en DB2?
- 23. Restando un cierto número de horas, días, meses o años a partir de la fecha
- 24. añadiendo días a una fecha
- 25. jQuery datepicker - cambiar la fecha de "hoy"?
- 26. ¿Comparando resultados con la fecha de hoy?
- 27. oráculo fecha sql a más tardar hoy
- 28. Android ¿Cómo cambiar el número total de días en años, meses y días exactamente?
- 29. Devuelve la fecha actual más 7 días
- 30. PHP El cálculo fecha futura mediante la adición de días a una fecha variable de
Como la mayoría de las cosas javascript, el procesamiento de fecha incorporado es extremadamente potente, pero completamente no intuitivo. –
@Joel: de acuerdo, es un headshaker que 'setDate()'. No intuitivo es un buen descriptor. –
[Objeto de fecha] (https://developer.mozilla.org/en/JavaScript/Reference/global_objects/date) como referencia. – Reigel