Error con script al sumar fechas
Hola amigo Juan otra ves! Mira este es el script que me esta dando problemas, y de verdad javascript tengo muy pero muy pocos conocimientos ya que en la uni se puede decir me enseñaron lo básico de php y jamas vi un script.
Bueno yo tengo que sumar meses a una fecha, me explico fecha 1 + 3 meses = fecha2, entonces mi código cuando ingreso fechas dd/01/yyyy al dd/09/yyyy me suma perfectamente los meses, pero cuando coloco dd/10/yyyy al dd/12/yyyy me da error, le agradecería mucho su ayuda, aquí mi código
<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, num_meses){
var tiempo_años=parseInt(num_meses/12);
var tiempo_meses=parseInt(num_meses%12);
var nuevo_mes=nMes+tiempo_meses;
var nuevo_año=nAno+tiempo_años;
if(nuevo_mes>12 && num_meses<=12){ nuevo_mes=nuevo_mes-12;nuevo_año++; }
if(nuevo_mes>12 ){ nuevo_mes=nuevo_mes-12; }
return armaFecha(nDia, nuevo_mes, nuevo_año);
}
function calcula(){
var sFc0 = document.frm.fecha0.value; // Se asume válida
var nSum = parseInt(document.frm.meses.value);
var vector_fecha=sFc0.split('/');
var nDia = parseInt(vector_fecha[0].substr(1, 1));
var nMes = parseInt(vector_fecha[1].substr(1, 1));
var nAno = parseInt(vector_fecha[2]);
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>
intenta agregar una fecha como 10/10/2010
Y dile que sume 4 meses para que veas el error.
Y bueno de antemano Gracias por la ayuda!
"No hay nada imposible en la vida la cuestión es: saber cómo carajos hacerlo."
Ségún : Juan C Moreno H
Bueno yo tengo que sumar meses a una fecha, me explico fecha 1 + 3 meses = fecha2, entonces mi código cuando ingreso fechas dd/01/yyyy al dd/09/yyyy me suma perfectamente los meses, pero cuando coloco dd/10/yyyy al dd/12/yyyy me da error, le agradecería mucho su ayuda, aquí mi código
<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, num_meses){
var tiempo_años=parseInt(num_meses/12);
var tiempo_meses=parseInt(num_meses%12);
var nuevo_mes=nMes+tiempo_meses;
var nuevo_año=nAno+tiempo_años;
if(nuevo_mes>12 && num_meses<=12){ nuevo_mes=nuevo_mes-12;nuevo_año++; }
if(nuevo_mes>12 ){ nuevo_mes=nuevo_mes-12; }
return armaFecha(nDia, nuevo_mes, nuevo_año);
}
function calcula(){
var sFc0 = document.frm.fecha0.value; // Se asume válida
var nSum = parseInt(document.frm.meses.value);
var vector_fecha=sFc0.split('/');
var nDia = parseInt(vector_fecha[0].substr(1, 1));
var nMes = parseInt(vector_fecha[1].substr(1, 1));
var nAno = parseInt(vector_fecha[2]);
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>
intenta agregar una fecha como 10/10/2010
Y dile que sume 4 meses para que veas el error.
Y bueno de antemano Gracias por la ayuda!
"No hay nada imposible en la vida la cuestión es: saber cómo carajos hacerlo."
Ségún : Juan C Moreno H
1 Respuesta
Respuesta de Juan Moreno
1