Diferença entre Datas

Galera!,

Alguém sabe dizer se existe alguma classe do java que informa a diferença entre duas datas, retornando em dias ??

Valeu!!!

http://www.guj.com.br/forum/viewtopic.php?t=9440&highlight=diferen�a+datas

[quote=“fmartins”]Alguém sabe dizer se existe alguma classe do java que informa a diferença entre duas datas, retornando em dias ??
[/quote]

Bom, no JDK não tem, mas você sempre pode fazer algumas continhas…

[code]import java.util.*;
class Test132 {
public static void main(String[] args) {
Calendar c1 = new GregorianCalendar(2004, 10, 6);
Calendar c2 = new GregorianCalendar(2004, 10, 20);
Date d1 = c1.getTime();
Date d2 = c2.getTime();

    double diffDias = Math.floor((d2.getTime() - d1.getTime()) / 1000.0 / 86400.00);
    System.out.println (diffDias);
}

}[/code]

OkÁ!

Vou fazer essas contas!

Pessoal,

Pelo que eu andei analisando do código de vocês, ele só contará os dias caso as datas sejam do mesmo mês, por exemplo, ele acertará se for 02/11/2007 e 29/11/2007, mas não conseguirá contar se for 02/10/2007 e 29/11/2007.

Também não consegui achar nenhum código que resolvesse meu problema, então fiz o meu :wink:

	public int Diferenca_Data(int data_atual, int data_prevista){

		int aDia, aMes, pDia, pMes, pAno, dia;
		int aux, i, aNumDiasMes, pNumDiasMes;
		int flag=0;

		aDia = data_atual/1000000;

		aux = data_atual%1000000;

		aMes = aux/10000;

		pDia = data_prevista/1000000;

		aux = data_prevista%1000000;

		pMes = aux/10000;

		pAno = aux%10000;

		while (aMes > pMes){

			if (flag == 1){

				pMes = pMes + 1;

			}

			pNumDiasMes = NumMes(pMes,pAno);

			if (aMes == pMes){

				aux = aDia;

			}else if (aMes > pMes && flag == 1){

				aux = pNumDiasMes;

			}else{

				aux = pNumDiasMes - pDia;

			}

			for (i=aux;i>0;i--){

				dia = 1 + dia;

			}

			flag = 1;
		}

		if (aDia > pDia){
			aux = aDia - pDia;

			for (i=aux;i>0;i--){

				dia = 1 + dia;

			}
		}

		return dia;
	}

	public int NumMes(int mes, int ano){
		int NumDiasMes;

		if ((mes==1)||(mes==3)||(mes==5)||(mes==7)||(mes==8)||(mes==10)||(mes==12))
		{
			NumDiasMes=31;
		}
		else if ((mes==4)||(mes==6)||(mes==9)||(mes==11))
		{
			NumDiasMes=30;
		}
		else
		{

			if (((ano % 4) == 0) && ((ano % 100) == 0))

				NumDiasMes=29;

			else if ((ano % 400) == 0)

				NumDiasMes=29;

			else
				NumDiasMes=28;
		}

		return NumDiasMes;
	}

Não sei se esta é a melhor solução, mas resolveu meu caso. Caso alguem encontre um bug, por favor, relatem :smiley: