Diferença em horas sendo calculada incorretamente

3 respostas
P

Feras, to com dificuldade pra calcular a diferença em horas entre 2 datas.

private double diferencaHoras(Date horaEntrada, Date horaSaida){
		 double result = 0;  
         long diferenca = horaSaida.getTime() - horaEntrada.getTime();  
         long diferencaEmHoras = (diferenca /1000) / 60 / 60;  
         long minutosRestantes = (diferenca / 1000)/60 %60;  
         double horasRestantes = minutosRestantes / 60d;  
         result = diferencaEmHoras + (horasRestantes); 
         return result;
	}
	
	public static void main(String[] args){
		HorarioServiceImpl h = new HorarioServiceImpl();


		Date data1 = new Date();
		data1.setDate(15);
		data1.setMonth(10);
		data1.setYear(1987);
		data1.setHours(9);
		data1.setMinutes(10);
		data1.setSeconds(30);
		
		Date data2 = new Date();
		data2.setDate(15);
		data2.setMonth(10);
		data2.setYear(1987);
		data2.setHours(17);
		data2.setMinutes(54);
		data2.setSeconds(30);
	
		System.out.println(h.diferencaHoras(data1, data2));
		
	}

O cálculo sempre sai errado. Alguém pode me ajudar?

3 Respostas

ViniGodoy

Pq vc não faz simplesmente:

private double diferencaHoras(Date horaEntrada, Date horaSaida){ long diferenca = horaSaida.getTime() - horaEntrada.getTime(); return (diferenca /1000.0) / 60.0 / 60.0; }

Outra coisa, já que está fazendo calculos desse tipo, consulte o Joda-Time:
http://joda-time.sourceforge.net/

É zilhões de vezes melhor que a API de tempo do Java.

G

http://www.guj.com.br/posts/list/9440.java

ViniGodoy

Pela similaridade do código, algo me diz que ele já tinha encontrado esse post…

Criado 6 de janeiro de 2010
Ultima resposta 6 de jan. de 2010
Respostas 3
Participantes 3