Operação entre datas

7 respostas
ezem.rs

Olá galera,

Eu tenho duas datas em formato de String e estou precisando achar a diferença em dias entre elas. A principio copiei o código abaixo desse mesmo fórum, que transforma string para date, porém o retorno não é o desejado.

GregorianCalendar ini = new GregorianCalendar();  
        GregorianCalendar fim = new GregorianCalendar();  
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");  
        try {  
            ini.setTime(sdf.parse("10/09/2004"));
        } catch (ParseException ex) {
            Logger.getLogger(F_Manter_Titulos.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {  
            fim.setTime(sdf.parse("15/09/2004"));
        } catch (ParseException ex) {
            Logger.getLogger(F_Manter_Titulos.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        long dt1 = ini.getTimeInMillis();  
        long dt2 = ini.getTimeInMillis();  
        
        Date diferenca = new Date(dt2 -dt1);  
        System.out.println("Diferenca....:"+diferenca);
Abaixo o retorno:
Diferenca....:Wed Dec 31 21:00:00 BRT 1969

O retorno que eu preciso é um inteiro, ou seja, 5.

Alguém sabe me orientar como fazer?

Abaixo o link que estava consultado.

[url]http://javafree.uol.com.br/topic-9204-Diferenca-entre-datas.html[/url]

Obrigado.

7 Respostas

Xmio

Uma forma simples de se fazer.
Transforme as duas datas em um inteiro no formato AAAAMMDD, subtraia a data final da data inicial e voilá… tem seu inteiro coma diferença entre as datas.

L

Vc já deu uma olhada nesse post?

http://blog.caelum.com.br/o-eterno-problema-de-calcular-a-diferenca-de-dias-entre-duas-datas-em-java/

O que o Xmio falou, ao meu ver, não faz muito sentido, só se fosse datas no mesmo mês.

Abraços

L

Faz um teste aí:

long dt1 = ini.getTimeInMillis();  
		long dt2 = fim.getTimeInMillis();

		int diferenca = (int)( (dt2 - dt1) / (24*60*60*1000) );  
		System.out.println("Diferenca....: "+diferenca);

Aqui funcionou!
E lembre-se que seu codigo ta errado neste ponto:

// TA COM ini 2 VEZES
		long dt1 = ini.getTimeInMillis();  
		long dt2 = ini.getTimeInMillis();
ezem.rs

Ok lsouza13 e obrigado por indicar o post.

Abraço e sucesso.

MiguelCP

Cara, existe uma biblioteca, que eu fiz e disponibilizei no endereço https://code.google.com/p/ltn4java/downloads/list é muito fácil de usar e tem um artigo que auxilia no uso do mesmo, no mesmo site, qualquer duvida é só falar comigo.
Atende as suas necessidades.

ezem.rs

Ok. Obrigado pelas dicas.

B

Se puder usar somente o Joda Time para esses tipos de cálculo, pelo menos até o Java 8 com a API de Data e Hora chegar, o mundo fica agradecido.

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

Criado 16 de março de 2013
Ultima resposta 20 de mar. de 2013
Respostas 7
Participantes 5