Subtração de horas

2 respostas
R

Como faço para subtrair uma determinada hora.

Uma determinada pessoa fez um login no sistema as 23:57:44 e saiu
as 05:57:49 , o tempo total de login seria 06:00:05.

Transformo a data incial e final em milisegundos, a dtFim será menor
que a dtInic como devo fazer para chegar no tempo total correto.

if (dtFim < dtInic) {
	tempo = (dtFim - dtInic);

                //formato as hora em hh:mm:ss
	result = Utilitarios.getFormatedHora(tempo);
}

2 Respostas

I

Várias formas…uma delasseria criar um java.text.SimpleDateFormat e usar o getTime do java.util.Date, algo maais ou - assim:

try{   
           SimpleDateFormat df = new SimpleDateFormat ("dd/MM/yyyy hh:mm:ss");    
            Date data1 = df.parse("suaData");   e mesmo com data2
 passando a um metódo:
           retornarHorasDeDiferenca(data1,data2));
 }catch(java.text.ParseException parse){   
            parse.printStackTrace();   
        }
e no seu método retornarHorasDeDiferenca:



private long retornarHorasDeDiferenca(Date dtInic, Date dtFim){

return (dtFim.getTime() - dtInic.getTime()) / (1000<em>60</em>60);

}
S

Vc não quer formatar uma hora (um tempo) vc quer formatar um intervalo de tempo. Como seu objectivo é formatar um intervalo vc pode criar o seu proprio Formater pois a formação resume-se a dividir por 60 cada uma das partes. Se vc suar Date ou Calendar eles vão intrepretar os milisegundos como decorrentes a apartir do inicio da epoca do java e vc terá que despresar os anos. Supondo que no seu caso isso não é um problema então a solução é fazer:

Calendar c = Calendar.getInstance();
c.setTimeMiliseconds(tempo);

String formatado = (new SimpleDateFormater ("HH:mm:ss")).format(c.getTime())
Criado 17 de agosto de 2007
Ultima resposta 18 de ago. de 2007
Respostas 2
Participantes 3