Foros del Web » Programando para Internet » Javascript »

Error al calcular dias entre 2 fechas

Estas en el tema de Error al calcular dias entre 2 fechas en el foro de Javascript en Foros del Web. Tengo el siguiente codigo: Código HTML: <script type= "text/javascript" > function calcular_dias(){ fecha1 = document.altas.fechain.value; fecha2 = document.altas.fechaout.value; dia1 = fecha1.substring(0,2); mes1 = fecha1.substring(3,5); anyo1 ...
  #1 (permalink)  
Antiguo 13/09/2007, 01:39
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 5 meses
Puntos: 1
Error al calcular dias entre 2 fechas

Tengo el siguiente codigo:

Código HTML:
<script type="text/javascript">
function calcular_dias(){
fecha1 = document.altas.fechain.value;
fecha2 = document.altas.fechaout.value;
dia1 = fecha1.substring(0,2);
mes1 = fecha1.substring(3,5);
anyo1 = fecha1.substring(6,10);
var fechainicio = new Date(anyo1,mes1,dia1,12,0,0);

dia2 = fecha2.substring(0,2);
mes2 = fecha2.substring(3,5);
anyo2 = fecha2.substring(6,10);
var fechafin = new Date(anyo2,mes2,dia2,12,0,0);

MSxDia=24*60*60*1000; //milisegundos que tiene un dia

dias=(fechafin.getTime() - fechainicio.getTime()) / MSxDia;
dias = Math.floor(dias);
window.alert(dias);

}
</script> 
Funcionar parece que funciona, hasta que te das cuenta de que cuenta mal el numero de dias de cada mes.

Por ejemplo, si metes como fecha de inicio 12/09/2007 y como fecha de fin 12/10/2007, da como resultado 31, cuando, como todos sabemos, septiembre tiene 30 dias.

Pero es mas, si meto como fecha de inicio 12/10/2007 y fin 12/11/2007, resulta dar 30 dias, cuando deberian ser 31. Es como si hubiera un desfase de un mes

¿Alguien sabe andestá el error?

Gracias de antemano

P.D.: antes de enviar el post, he probado a meter 01/01/2007 a 01/02/2007 y me da 28 dias. wtf ??
  #2 (permalink)  
Antiguo 13/09/2007, 01:46
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Error al calcular dias entre 2 fechas

Ok, el tema esta en que Date calcula los meses de 0 a 11.

La pregunta que os hago ahora es: "¿alguien sabe por qué los calcula asi?¿a quien se le ocurrió?"

Simple curiosidad.....

Saludos
  #3 (permalink)  
Antiguo 13/09/2007, 09:10
 
Fecha de Ingreso: septiembre-2007
Mensajes: 26
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: Error al calcular dias entre 2 fechas

Cuando tienes una tabla (Array) con los nombres de los meses, por ejemplo, tienes el índice directamente.
Por qué en el método .substring() elsegundo parámetro es el índice del siguinete carácter al último que quieres obtener? Pues seguramnete cuando se hacen parsers interesa ir teniendo el indice en la próxima posición, no se!
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 21:20.