Calendar: diferencia entre fechas en días

borchx
11 de Noviembre del 2005
Hola, necesito poder saber la diferencia entre dos fechas en días. Lo que hago es sacar los milisegundos de cada una de ellas, restar el mayor por el menor y con ese long, crear un calendario. con ese calendario hago un get(c.get(Calendar.DAY_OF_YEAR). Pero el problema es cuando la diferencia es de más de un año ya que el int que devuelve vuelve a resetearse a 0. ¿alguna pistilla o solución?

public static int diffDates(Date fecha1, Date fecha2){
long lFecha1 = fecha1.getLong();
long lFecha2 = fecha2.getLong();
long lDiff;
Calendar cal = Calendar.getInstance();
if (lFecha1 < lFecha2){
lDiff = lFecha2 - lFecha1;
cal.setTimeInMillis(lDiff);
return cal.get(Calendar.DAY_OF_YEAR);
} else if (lFecha1 > lFecha2){
lDiff = lFecha1 - lFecha2;
cal.setTimeInMillis(lDiff);
return cal.get(Calendar.DAY_OF_YEAR);
} else return 0;
}

GRACIAS!!!!

Vanesa
11 de Noviembre del 2005
A ver para cuando Calendar lleve un método para esto y mil cosas más, por ahora la manera más rápida (o la que yo conozco es):

GregorianCalendar fechaCalendarPre = new GregorianCalendar();
GregorianCalendar fechaCalendarPost = new GregorianCalendar();

long difMillis = fechaCalendarPost.getTimeInMillis() - fechaCalendarPre.getTimeInMillis();
long difDias = difMillis / (1000 * 60 * 60 * 24);
return difDias;

Espero que te sirva, un saludo.

Vanesa
11 de Noviembre del 2005
Por supuesto me falta esto entre medias:
fechaCalendarPre.setTime(fechaPre);
fechaCalendarPost.setTime(fechaPost);

siendo fechaPre y fechaPost de tipo Date.
Un saludo.