Foros del Web » Programación para mayores de 30 ;) » Java »

Distancia entre dos fechas

Estas en el tema de Distancia entre dos fechas en el foro de Java en Foros del Web. Hola a todos: Tengo el siguiente código: GregorianCalendar gc1=new GregorianCalendar(1982,05,31); GregorianCalendar gc2=new GregorianCalendar(1989,03,26); Date fec1=gc1.getTime(); Date fec2=gc2.getTime(); long tiempo; if (fec1.compareTo(fec2)>0) { tiempo=fec1.getTime()-fec2.getTime(); } else ...
  #1 (permalink)  
Antiguo 19/04/2012, 10:08
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 17 años, 5 meses
Puntos: 5
Distancia entre dos fechas

Hola a todos:

Tengo el siguiente código:

GregorianCalendar gc1=new GregorianCalendar(1982,05,31);
GregorianCalendar gc2=new GregorianCalendar(1989,03,26);
Date fec1=gc1.getTime();
Date fec2=gc2.getTime();

long tiempo;
if (fec1.compareTo(fec2)>0) {
tiempo=fec1.getTime()-fec2.getTime();
}
else {
tiempo=fec2.getTime()-fec1.getTime();
}

long milisegundos=tiempo;
long segundos=milisegundos/1000;
long horas=segundos/3600;
long dias=horas/24;
int meses=(int)dias/30;
int annos=(int)dias/365;

System.out.print("Entre una fecha y otra hay: "+annos+" años, ");
long resto=dias%365;
if (resto!=0) {
meses=(int)resto/30;
System.out.print(meses+" meses, ");
dias=resto%30;
if (resto!=0) {
System.out.print(dias+" días");
}
}

Me funciona perfectamente. Pero me ha dado cuenta que no es exacto, porque no todos los meses tienen 30 días ni tampoco todos los años tienen 365 días por lo que los resultados finales son erróneos.

¿Existe alguna manera de poder calcular el tiempo justo transcurrido entre una fecha y otra?

Gracias
  #2 (permalink)  
Antiguo 19/04/2012, 13:11
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Distancia entre dos fechas

O sea que calculas bien el tiempo pero quieres dar el resultado en meses exacto.

No tiene mucho sentido, aunque puedes contar los meses del primer y último año y sumar 12 por cada año de diferencia.

Edito:

Cuanto más leo tu mensaje, menos entiendo lo que pretendes.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Última edición por Xerelo; 19/04/2012 a las 13:18
  #3 (permalink)  
Antiguo 20/04/2012, 03:29
 
Fecha de Ingreso: febrero-2009
Mensajes: 4
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Distancia entre dos fechas

Cita:
Iniciado por Xerelo Ver Mensaje
O sea que calculas bien el tiempo pero quieres dar el resultado en meses exacto.

No tiene mucho sentido, aunque puedes contar los meses del primer y último año y sumar 12 por cada año de diferencia.

Edito:

Cuanto más leo tu mensaje, menos entiendo lo que pretendes.
Creo que lo que de verdad desea es que calcule los dias transcurridos entre dos fechas o al menos yo lo entiendo así.

En caso de que no sea asi del todo despues es totalmente posible sacar esos días en horas, minutos o segundos.
  #4 (permalink)  
Antiguo 20/04/2012, 06:08
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 17 años, 5 meses
Puntos: 5
Respuesta: Distancia entre dos fechas

Lo que pretende es que me de el resultado exacto. Por ejemplo, si ejecutamos el código que puse antes con esas fecha el resultado es:

Entre una fecha y otra hay: 6 años, 10 meses, 1 días

Sin embargo entre el 31/05/1982 y el 26/03/1989 hay una distancia de: 6 años, 9 meses y 26 días. Es decir, el código actual calcula mal el resultado. A eso me referería.

Saludos
  #5 (permalink)  
Antiguo 20/04/2012, 12:20
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Distancia entre dos fechas

Bueno, no conozco una función que se adapte a lo que buscas.

Yo lo que haría sería el siguiente algoritmo, no necesitas obtener el tiempo en ms te llega con el get y add de Calendar/GregorianCalendar.

Código Javascript:
Ver original
  1. if(!mismoAño)
  2. {
  3. Calcular meses y días hasta fin de año del año origen.
  4.  
  5. Nueva fecha origen,  1 de enero del siguiente año
  6.  
  7. Calcular número de años entre fecha origen y fin
  8.  
  9. Nueva fecha origen 1 de enero de año de fecha fin
  10. }
  11.  
  12. Calcular(sumar) numero de meses y días hasta fecha fin


No creo que haga falta explicar como calcular meses y años entre dos fechas del mismo año.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: distancia
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:27.