Ver Mensaje Individual
  #10 (permalink)  
Antiguo 26/09/2007, 17:20
alexisfch
 
Fecha de Ingreso: septiembre-2007
Mensajes: 150
Antigüedad: 17 años, 4 meses
Puntos: 1
Exclamación Sumar Meses a una Fecha en Javascript

Hola, alguiewn sabe como sumar un x cantidad de meses a una fecha dada(DD/MM/YYYY) ?, considerando que despues del mes 12 viene el 1 y que febrero tiene 28 dias y algunos meses 30 o 31 dias. En este foro encontre este script, pero tiene un error ya que cuando por ejemplo pones el mes 08 o 09 los considera como mes 12 y por ejemplo 05/08/2005 + 1 mes = 05/01/2006 pasa lo mismo con el mes 09.
Saludos.

Código HTML:
<html> 
<head> 
<script language="JavaScript"> 
function cerosIzq(sVal, nPos){ 
var sRes = sVal; 
for (var i = sVal.length; i < nPos; i++) 
sRes = "0" + sRes; 
return sRes; 
} 

function armaFecha(nDia, nMes, nAno){ 
var sRes = cerosIzq(String(nDia), 2); 
sRes = sRes + "/" + cerosIzq(String(nMes), 2); 
sRes = sRes + "/" + cerosIzq(String(nAno), 4); 
return sRes; 
} 

function sumaMes(nDia, nMes, nAno, nSum){ 
if (nSum >= 0){ 
for (var i = 0; i < Math.abs(nSum); i++){ 
if (nMes == 12){ 
nMes = 1; 
nAno += 1; 
} else nMes += 1; 
} 
} else { 
for (var i = 0; i < Math.abs(nSum); i++){ 
if (nMes == 1){ 
nMes = 12; 
nAno -= 1; 
} else nMes -= 1; 
} 
} 
return armaFecha(nDia, nMes, nAno); 
} 

function calcula(){ 
var sFc0 = document.frm.fecha0.value; // Se asume válida 
var nSum = parseInt(document.frm.meses.value); 
var sFc1 = sFc0; 
if (!isNaN(nSum)){ 
var nDia = parseInt(sFc0.substr(0, 2)); 
var nMes = parseInt(sFc0.substr(3, 2)); 
var nAno = parseInt(sFc0.substr(6, 4)); 
sFc1 = sumaMes(nDia, nMes, nAno, nSum); 
} 
document.frm.fecha1.value = sFc1; 
} 
</script> 
</head> 
<body> 
<form name="frm"> 
<table border="0"> 
<tr> 
<td> 
<table border="1"> 
<tr> 
<td align="right"> 
Fecha inicial (dd/mm/aaaa) 
</td> 
<td> 
<input type="text" name="fecha0" value="21/03/2002"> 
</td> 
</tr> 
<tr> 
<td align="right"> 
Meses 
</td> 
<td> 
<input type="text" name="meses" value="0"> 
</td> 
</tr> 
<tr> 
<td align="right"> 
Fecha final (dd/mm/aaaa) 
</td> 
<td> 
<input type="text" name="fecha1" readonly> 
</td> 
</tr> 
</table> 
</td> 
</tr> 
<tr> 
<td align="center"> 
<input type="button" value="Calcular" onclick="calcula()"> 
</td> 
</tr> 
</table> 
</form> 
</body> 
</html>