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

1 Respuesta

Respuesta
1
Lo pude sacar pero con Ajax este es el código:
---------------------------- El html
<html>
<head>
<script type="text/javascript">
function objetoAjax(){var xmlhttp=false;try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} catch (E) {xmlhttp = false;}}if (!xmlhttp && typeof XMLHttpRequest!='undefined') {xmlhttp = new XMLHttpRequest();}return xmlhttp;}
var img_carga = '<img src="'">">';
function aumentaDate(){
divStatus = document.getElementById('status');
divStatus.innerHTML = img_carga;
dateInicio = document.dato.dateInicio.value;
mesMas = document.dato.mesMas.value;
error = '';
if (dateInicio == ''){ error = error + "\r - Debe ingresar la fecha inicio";}
if (mesMas == ''){ error = error + "\r - Debe ingresar la cantidad de meses a aumentar";}
if (error == ''){
ajax=objetoAjax();
ajax.open("POST", "process.php",true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
divStatus.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send("mesMas="+mesMas+"&dateInicio="+dateInicio)
} else {
error = "Debe cumplir los siguientes parametros:\r " + error;
alert(error);
divStatus.innerHTML = '';
}
}
</script>
<style type="text/css">
body{background-color: #333; color: #FFF;}
table {text-align: right;font-weight: bold;}
</style>
</head>
<body>
<form name="dato">
<p> </p>
<table border="0" align="center">
<tr>
<td> Fecha inicial (dd/mm/aaaa) </td>
<td><input type="text" name="dateInicio" value="10/10/2010" id="dateInicio"></td>
</tr>
<tr>
<td> Meses de aumento</td>
<td><input type="text" name="mesMas" id="mesMas" value="4"></td>
</tr>
<tr>
<td colspan="2"><hr></td>
</tr>
<tr>
<td colspan="2"><p>
<input type="button" value="..:: Calcular ::.." onClick="aumentaDate();">
</p>
<div id="status"></div>
<p> </p></td>
</tr>
</table>
</form>
</body>
</html>
----------------------------------------
este es el process.php
<?Php
$cajaTexto = $_POST['dateInicio'];
$mes = $_POST['mesMas'];
$date = new DateTime($cajaTexto);
$date->modify('+'.$mes.' month');
echo $date->format('d-m-Y');
?>
Listo! Espero sea de ayuda y oye como así que en la Universidad solo lo básico que masl! Sabes, yo no soy profesional solo tengo un técnico y pues eso es lo que me desalienta de meterme a la universidad porque eso es solo mamadera de gallo y pues aprende uno más en la casa cacharriando.. y pues no me quejo pero me a ido bien.. tengo una buena base de datos para importate empresa de telecomunicaciones... ufff esa si me saco canas y casi que doy por terminado mi dicho ja ja..
Éxitos!
Dios te Bendiga
Juan, ejecute el código desde mi servidor pero, nada el html no procesa function aumentaDate(){ y por lo tanto no se va al process.php, no puedo hacer que funcione tu código!
Y bueno si yo también tengo un técnico superior, pero referente a a programación opensource fue una mala experiencia! :(
Mmmm recuerda que el "process.php" debe estar en la misma carpeta de donde colocas el html... mira en la parte inferior del navegador en la barra de estado debe salir algún alerta dale doble clic que en ese cuadro de dialogo que te sale te muestra el mensaje...
Intenta y me comentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas