Buenos días a todos. Mi problema es que tuve que "buscarme la vida" para hacer un ejercicio que, entre otras cosas, obliga a calcular el número de días entre dos fechas.
Sé que hay otros métodos y que se pueden hacer manualmente, pero encontré este y lo estudié. Consiste en que pasa cada fecha a milisegundos, teniendo en cuenta el calendario gregoriano que empieza el 1/1/1970 si no recuerdo mal, para una vez echa la resta de fechas, pasarlo a días.
El problema que tengo es que si la diferencia se hace en base al mismo mes no hay problema, pero al cambiar de mes no lo hace bien, ya que poniendo el último día de un mes y el primero del siguiente mes, me pone -1. A continuación copio el código de la clase para que le echéis un vistazo si queréis.
public class resta_fecha {
int di,mi,ai,df,mf,af;
long t;
public resta_fecha(int diai,int mesi,int anioi,int diaf,int mesf,int aniof){
di=diai;
mi=mesi;
ai=anioi;
df=diaf;
mf=mesf;
af=aniof;
//Creo las dos instancias de fecha
GregorianCalendar finicial = new GregorianCalendar(ai, mi, di);
GregorianCalendar ffinal = new GregorianCalendar(af, mf, df);
//Obtengo los objetos Date para cada una de ellas
Date fi = finicial.getTime();
Date ff = ffinal.getTime();
//Realizo la operación
long tiempo = ff.getTime() - fi.getTime(); //tiempo en milisegundos
//Muestro el resultado en días
//t=tiempo/(3600*24*1000);
t=tiempo/(1000*60*60*24);
NOTA: t es la variable donde guardo los días.
Espero alguna respuesta que me pueda ayudar. Muchas gracias.