Calcular diferença de tempo

Pessoal, gostaria de ver se alguém poderia me ajudar a resolver um problema. Estou tendo de calcular a diferença entre duas datas e retornar como resposta o número em horas. Acontece que tenho como data final a data do sistema, a qual obtenho da seguinte maneira: [code]Calendar calendario = Calendar.getInstance();

int hora = calendario.get(Calendar.HOUR);
int mins = calendario.get(Calendar.MINUTE);
int segs = calendario.get(Calendar.SECOND);
int mil = calendario.get(Calendar.MILLISECOND);

int dia = calendario.get(Calendar.DAY_OF_MONTH);
int mes = calendario.get(Calendar.MONTH);
int ano = calendario.get(Calendar.YEAR);

String data_sist = (ano + “-” + (mes + 1) + “-” + dia + " " + hora + “:” + mins + “:” + segs + “.” + mil);[/code]
E tenho como data inicial a data que está gravada no banco, a qual estou capturando da seguinte maneira:[code]Date data = rs.getDate(2);
Date myDate = data;
DateFormat df;

	        df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
			String datasis = String.valueOf(df.format(myDate));[/code]

Acontece que como data final eu obtenho por exemplo o seguinte resultado:[quote]2005-06-10 21:20:16.567 [/quote]
E como data inicial, obtenho como exemplo o seguinte resultado:[quote]2005-6-10 11:35:8.143[/quote] Lembrando que os dois resultados estão como string.

Agradeço se alguém puder me ajudar a calcular esta diferença.

Aprenda a buscar no forum. O botao Pesquisar ta ali em cima.
http://www.guj.com.br/posts/list/9440.java

Cara,

Vc tem dois Date. Pq não fazer um getTime() em cada um, subtrair os resultados e dividir até chegar em horas???

long milisAtual = calendario.getTimeInMilis();
long milisArmazenado = myDate.getTime();
long diferenca = milisAtual - milisArmazenado;
long diferencaHoras = diferenca / 3600000;

É mais ou menos isso.

Abraços,

Diogo

Obrigado pessoal pelas dicas, funcionou. Acontece que verifiquei um problema que gostaria de ver se alguém poderia me dar uma dica de como resolvê-lo. Tenho a busca de data ínicial que é feita no banco da seguinte maneira:Date data = rs.getDate("data");Se mando escrever esta variável data na tela ela me retorna por exemplo:[quote]2005-6-10 2:20:32.159[/quote]Só que ao verificar o registro no banco de dados, percebi que lá esta gravado da seguinte maneira:[quote]2005-06-10 09:21:21.487[/quote]E ao calcular a diferença de tempo em horas como no exemplo:[quote]2005-06-10 14:16:31.423 - 2005-6-10 2:20:32.159[/quote] Me é retornada uma diferença de 14 horas, sendo que se pegarmos a data que realmente está no banco que é 2005-06-10 09:21:21.487 verifico que a diferença é de 11 horas.
Agradeço se algué tiver uma dica de como fazer para pegar do banco a data e hora exatamente como está gravado lá.

Pessoal, testei um novo trecho de código e o cálculo de tempo funcionou. O problema que estou encontrando é que o meu: Date data = rs.getDate(2);
Está retornando somente a data e no momento de calcular: long diferenca = System.currentTimeMillis() - dataInicial.getTimeInMillis();
Ele assume o horário do banco como sendo 00:00:00.000. Fiz um exemplo para testar e gravei no banco a data: 2005-06-13 07:01:16.670 e quando calculei o resultado com o seguinte trecho de código:

[code]
Date data = rs.getDate(2); // a data que voce pega do banco

     out.println("datainicial" + data);          
      
     Calendar dataInicial = Calendar.getInstance();                   
     dataInicial.setTime(data);          
     out.println("dataInicial:" + dataInicial);          
     out.println("dataatual:" + System.currentTimeMillis());          
      
     long diferenca = System.currentTimeMillis() - dataInicial.getTimeInMillis();          
     long diferencaSeg = diferenca /1000;    //DIFERENCA EM SEGUNDOS 
     long diferencaMin = diferenca /(60*1000);    //DIFERENCA EM MINUTOS 
     long diferencaHoras = diferenca/(60*60*1000);    // DIFERENCA EM HORAS          
      
               out.println("diferencaHoras: " + diferencaHoras);[/code] 

Sendo que fiz isto uns 5 minutos após gravar a data no banco, me foi retornada a seguinte resposta na tela: [quote]
diferencaHoras: 7 [/quote]
Agradeço se alguém puder me dar uma dica de como fazer para trazer do banco não somente a data, mas juntamente com ela o horário que está gravado lá. Desde de já agradeço a atenção.

use getTimestamp() ao inves de getDate() :wink:

Valeu cv pela força, deu certo. Obrigado! :thumbup: