Subtração de datas retornando numero de dias [RESOLVIDO]

5 respostas
Hildebrando_Pedroni

Pessoal, andei procurando por ai e não achei nada que solucionasse o meu problemas.
Preciso subitrair datas e ter como retorno o numero de dias.

Preciso disso:

dataHoje = 24/11/2008
dataAmanha = 25/11/2008

diferencaDatas = dataHoje - dataAmanhã

Resultado

diferencaDatas = 1.

Preciso que a subtracao das datas me retorne o numero de dias entre as datas porsivos ou negativos.
Alguem pode me ajudar?

valeu

5 Respostas

fiaux

Acho que com Joda-time você consegue isso.

http://joda-time.sourceforge.net/

J

utilize esse método aqui:

public static int getDiferencaEmDiasEntreDuasDatas(Calendar dataI, Calendar dataF) {

long m1 = dataI.getTimeInMillis();

long m2 = dataF.getTimeInMillis();

return (int) ((m2 - m1) / (24 * 60 * 60 * 1000));

}
fiaux

fiaux:
Acho que com Joda-time você consegue isso.

http://joda-time.sourceforge.net/

edit: entre outras coisas interessantes sem fazer gambiarra.

Hildebrando_Pedroni

Bom galera, agradeço a ajuda mas eu resolvi da seguite forma:

Passando a data de vencimento por parametro…

private int calculaDiferencaData(Date dataVencimento) {
		
               Date dataAtual = new Date();

		Calendar c = Calendar.getInstance();
		c.setTime(dataAtual);

		Calendar c2 = Calendar.getInstance();
		c2.setTime(dataVencimento);

		equalizar(c); //chama uma funcao que zera o calendar
		equalizar(c2);

        int diferencaData = 0;
        while (c.before(c2)) {
            diferencaData++;
            c.add(Calendar.DAY_OF_MONTH, 1);
        }

		return diferencaData;
	}
    /**
     * Limpa os campos do calendar
     * @param c
     */
	private static void equalizar(Calendar c) {
		c.set(Calendar.HOUR, 0);
		c.set(Calendar.HOUR_OF_DAY, 0);
		c.set(Calendar.MINUTE, 0);
		c.set(Calendar.SECOND, 0);
		c.set(Calendar.MILLISECOND, 0);
		c.set(Calendar.AM_PM, Calendar.AM);
	}

é isso ai.
Obrigado a todos que tentaram ajudar e fica ai mais uma solução pra quem procurar.

root_

OBS: Não é preciso zerar o calendar… Garanto!

Criado 24 de novembro de 2008
Ultima resposta 9 de nov. de 2009
Respostas 5
Participantes 4