Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problemas en Calculo de diferencia de dias

Estas en el tema de Problemas en Calculo de diferencia de dias en el foro de Javascript en Foros del Web. Hola tengo una pagina en la que necesito hacer un calculo de diferencia de días entre dos fechas. Les muestro mi código y explico entre ...
  #1 (permalink)  
Antiguo 20/10/2014, 10:03
 
Fecha de Ingreso: diciembre-2010
Ubicación: Asunción
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 1
Problemas en Calculo de diferencia de dias

Hola tengo una pagina en la que necesito hacer un calculo de diferencia de días entre dos fechas. Les muestro mi código y explico entre lineas.
detalle.php
Código:
function restaFechas() {
	f1 = document.getElementById("inputField1").value;
	f2 = document.getElementById("vcto").value;
	var aFecha1 = f1.split('/'); 
	var aFecha2 = f2.split('/'); 
	var fFecha1 = Date.UTC(aFecha1[2],aFecha1[1]-1,aFecha1[0]); 
	var fFecha2 = Date.UTC(aFecha2[2],aFecha2[1]-1,aFecha2[0]); 
	var dif = fFecha2 - fFecha1;
	var dias = Math.floor(dif / (1000 * 60 * 60 * 24)); 
	document.getElementById("dias_dif").value = dias;
	//return dias;
}
Esta función en principio deberá coger el valor de esos elementos que están en el formulario más abajo.
Código:
<table>
	<tr>
		<td>Vencimiento: </td>
		<td><input type="text" name="vcto" id="vcto" value="<?=$vcto?>" size="8" disabled="disabled" onload="javascript:restaFechas();" /></td>
	</tr>
	<tr>
		<td>Fecha Pago: </td>
		<td><input type="text" name="fec_pago" id="inputField1" size="8" onblur="javascript:restaFechas();" /></td>
	</tr>
	<tr>
		<td>Días: </td>
		<td><input type="text" name="dias_dif" id="dias_dif" size="4" /></td>
	<tr>
</table>
En el código tengo esto en el primer input trea una fecha desde php en una consulta SQL del tipo dd/mm/aaaa y en el otro caso yo genero la fecha desde otro javascript para escoger fechas, que también se selecciona en el mismo formato. Al quitar el foco de mi input el resultado en dia_dif sale NaN. Sin embargo si vuelvo a seleccionar la fecha de pago escogiendo el mismo día entonces si me calcula.
¿Cómo puedo hacer para el calculo de haga desde la primera opción?
  #2 (permalink)  
Antiguo 21/10/2014, 06:35
Avatar de dAvidcA  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/dev/
Mensajes: 73
Antigüedad: 14 años, 7 meses
Puntos: 7
Respuesta: Problemas en Calculo de diferencia de dias

Hola dgrvedado, pueden pasar varias cosas, necesitamos diagnosticar el problema.

Qué sale en la consola si utilizas este método:

Código Javascript:
Ver original
  1. function restaFechas() {
  2.     var f1 = document.getElementById("inputField1").value;
  3.     var f2 = document.getElementById("vcto").value;
  4.     var aFecha1 = f1.split('/');
  5.     var aFecha2 = f2.split('/');
  6.     var fFecha1 = Date.UTC(aFecha1[2],aFecha1[1]-1,aFecha1[0]);
  7.     var fFecha2 = Date.UTC(aFecha2[2],aFecha2[1]-1,aFecha2[0]);
  8.    
  9.     var dif = fFecha2 - fFecha1;
  10.     if (!isNaN(dif)){
  11.         var dias = Math.floor(dif / (1000 * 60 * 60 * 24));
  12.         document.getElementById("dias_dif").value = dias;
  13.     } else {
  14.         console.log("Fecha1: "+f1+" | Fecha2: "+f2+" | Dif: "+ dif + " | "+typeof(dif));
  15.     }
  16. }

Saludos.
  #3 (permalink)  
Antiguo 21/10/2014, 14:08
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Problemas en Calculo de diferencia de dias

NaN representa un valor no numérico. esto viene a decir que el minuendo o el sustraendo o ambos no son valores numéricos. asegúrate que el método Date.UTC() retorna un valor numérico
Cita:
var a = 4;
var b;
console.log(a - b);
var c = 'a';
console.log(a - c);
var d = 'b';
console.log(c - d);
por otro lado, por qué el primer input text tiene asignado el evento onload??
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #4 (permalink)  
Antiguo 22/10/2014, 12:41
 
Fecha de Ingreso: diciembre-2010
Ubicación: Asunción
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Problemas en Calculo de diferencia de dias

Al final deje el calculo tal cual estaba y usé otra forma en el formulario.

Código:
<tr>
	<td>Vencimiento: </td>
	<td><input type="text" name="vcto" id="vcto" value="<?=$vcto?>" size="8" disabled="disabled" /></td>
</tr>
<tr>
	<td>Fecha Pago: </td>
	<td><input type="text" name="fec_pago" id="inputField1" size="8" /></td>
</tr>
<tr>
	<td>Días: </td>
	<td><input type="text" name="dias_dif" id="dias_dif" size="4" onclick="javascript:restaFechas();" onchange="multiplicar();" />
	<small><i>De click para calcular días</i></small>
	</td>
<tr>
Listo tema cerrado...
Gracias a todos por responder.

Etiquetas: calculo, dias, diferencia, formulario, input, php, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:35.