Error en código javascript, sumar fechas
Hola Experto, necesito su ayuda, la question es que tengo un script que suma mes a una fecha, el problema es que cuando ingreso fechas como dd/10/yyyy dd/11/yyyy y dd/12/yyyy
Y le mando a sumar 3 meses en adelante me hace mal el calculo, y me da una fecha incorrecta, pero con meses dd/01/yyyy al dd/09/yyyy si me hace bien el calculo, otra cosa que me percate es que si coloco de fecha 31/01/2011 y le mando a sumar un mes me da 31/02/2011 osea que le pone 31 a febrero, igual con los meses que no llegan a 31! Ayuda amigo! Este el script
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<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>
Le agradezco su ayuda, es para un proyecto que tengo en php, y con este script me estaba ayudando hasta que me percate del error, y de verdad no se casi nada de script ya que me enseñaron solo php. Muchas Gracias de Antemano!
Y le mando a sumar 3 meses en adelante me hace mal el calculo, y me da una fecha incorrecta, pero con meses dd/01/yyyy al dd/09/yyyy si me hace bien el calculo, otra cosa que me percate es que si coloco de fecha 31/01/2011 y le mando a sumar un mes me da 31/02/2011 osea que le pone 31 a febrero, igual con los meses que no llegan a 31! Ayuda amigo! Este el script
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<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>
Le agradezco su ayuda, es para un proyecto que tengo en php, y con este script me estaba ayudando hasta que me percate del error, y de verdad no se casi nada de script ya que me enseñaron solo php. Muchas Gracias de Antemano!
1 Respuesta
Respuesta de miguelsgav
1