Necesito que para una fecha de inicio determinada me sume X dias.
Para eso me cree la siguientes funciones:
Código:
function addDays(fecha,dias) {
var fechaPrueba = new Date(parseInt(2013),parseInt(12),parseInt(15));
try {
var sumarDias=parseInt(dias);
var fecha=fecha.split("-");
var fecha= new Date(fecha[2],fecha[1],fecha[0]);
var maxDay = maxDayMonth(fecha.getMonth());
var dia=fecha.getDate()+sumarDias;
if (dia>maxDay) {
dia=maxDay-fecha.getDate();
dia=(sumarDias-dia);
fecha.setMonth(fecha.getMonth()+1);
fecha.setDate(dia);
} else {
fecha.setDate(fecha.getDate()+sumarDias);
}
var anio=fecha.getFullYear();
var mes= fecha.getMonth();
var dia= fecha.getDate();
if(mes.toString().length<2){
mes="0".concat(mes);
}
if(dia.toString().length<2){
dia="0".concat(dia);
}
return dia+"-"+mes+"-"+anio;
} catch(err) {
return 0;
}
}
function maxDayMonth(xMes) {
switch(xMes) {
case 1: return 31;
case 2: return 28;
case 3: return 31;
case 4: return 30;
case 5: return 31;
case 6: return 30;
case 7: return 31;
case 8: return 31;
case 9: return 30;
case 10: return 31;
case 11: return 30;
case 12: return 31;
}
}
Para su uso cuando llamo a la funcion le paso la fecha inicio y la cantidad de dias de estancia.
Pero cuando selecciono el mes 12(Noviembre), por ejemplo: desde 15/12/2013 dias 1, me retorna el valor 16/00/2014
He estado realizando pruebas y solo me pasa con noviembre, de forma manual he realizado:
Código:
var fecha=new Date(2013,12,15);
alert(fecha);
alert(fecha.getMonth());
alert(fecha.getFullYear());
Y me da el mismo error. El día me lo muestra bien, pero el
mes (12) y el
año(2013) me muestra
00 y
2014
Pd: Alquien puede aclararme si javascript empieza a contar el nº de los meses a partir del valor 0, es decir, enero=0,febrero=1,marzo=2... ya que si es así, ese sería el fallo, que estoy tratando con un mes que no existe, el mes 12 sería el index 11. Realizo pruebas ahora para ver si es correcto.