Subtração de horas

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);
}

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()) / (10006060);
}

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())