Para eso me cree la siguientes funciones:
Código:
Para su uso cuando llamo a la funcion le paso la fecha inicio y la cantidad de dias de estancia. 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; } }
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:
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 2014var fecha=new Date(2013,12,15); alert(fecha); alert(fecha.getMonth()); alert(fecha.getFullYear());
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.