Intervalo entre duas datas, resgatar as horas do intervalo

Olá.

Estou começando um projetinho e me deparei com uma dificuldade.

Preciso saber o intervalo (em horas) entre a data atual e uma data mais adiante. Ex:

Hoje: 03/05/2012
Amanha: 04/05/2012

Intervalo: 24 horas

Estou tentando utilizar o getTimeInMillis() do Calendar…mas não estou conseguindo chegar no valor correto. Alguem tem alguma sugestão?
grato.

seg = 1000 * 1
minuto = seg * 60
hora = minuto * 60
Dia = hora * 24

Ou seja, você pode ir convertendo para segundos, depois minutos e, por último, por horas.

Pega em milesegundos as duas datas, joga cada uma em um long depois vc faz : maior - menor, ( resultado / 1000 / 60 /24).

Cara eu não testei, mas pelo q me lembro assim da certo, faz o teste ai…e posta se deu certo.

Se quiser facilidade pode usar o JodaTime também, caso seja útil pra você e isso não seja um exercício.

ele tem uma classe Hours que trata isso muito facilmente. Ex:

DateTime hoje = new DateTime(); DateTime amanha = new DateTime().plusDays(1); int horas = Hours.hoursBetween(hoje, amanha).getHours();

package tempo;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class CalculaTempo {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Calendar primeiraData = new GregorianCalendar(2012, 05, 03);
		Calendar segundaData = new GregorianCalendar(2012, 05, 04);
		
		Long msPrimeiraData = primeiraData.getTimeInMillis();
		Long msSegundaData = segundaData.getTimeInMillis();
		
		Long diferenca = msSegundaData - msPrimeiraData;
		
		//Mostra diferença em ms:
		System.out.println("Diferença em ms: " + diferenca);
		//Mostra diferença em s:
		System.out.println("Diferença em s: " + diferenca / 1000);
		//Mostra diferença em m:
		System.out.println("Diferença em m: " + diferenca / 1000 / 60);
		//Mostra diferença em h:
		System.out.println("Diferença em h: " + diferenca / 1000 / 60 / 60);
		//Mostra diferença em dias:
		System.out.println("Diferença em dias: " + diferenca / 1000 / 60 / 60 / 24);
		
	}

}

Bem tosco, mas funciona.

[quote=juniorsml]Pega em milesegundos as duas datas, joga cada uma em um long depois vc faz : maior - menor, ( resultado * 60 * 60 *24).

Cara eu não testei, mas pelo q me lembro assim da certo, faz o teste ai…e posta se deu certo.[/quote]

Acho que é resultado / 1000 / 60 / 60 pra ele conseguir as horas. Se multiplicar vai dar um número muito maior hehehe

[quote=digaoneves][quote=juniorsml]Pega em milesegundos as duas datas, joga cada uma em um long depois vc faz : maior - menor, ( resultado * 60 * 60 *24).

Cara eu não testei, mas pelo q me lembro assim da certo, faz o teste ai…e posta se deu certo.[/quote]

Acho que é resultado / 1000 / 60 / 60 pra ele conseguir as horas. Se multiplicar vai dar um número muito maior hehehe[/quote]
Ele inverteu a lógica.
Isto se usa para achar os ms de um dia…

digaoneves vc ta certo cara…me enganei legal…ja arrumei lá.