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;
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.
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;
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.