[RESOLVIDO] Método Calcular Diferença de tempo entre 2 horários em Java

Bom dia,

Eu não tenho muita afinidade em trabalhar com horas, e preciso de um método que calcule a diferença entre um horário inicial e um horário final, os dois horários estão em campos do tipo JFormattedTextField, eu preciso recuperá-los a partir destes campos formatados e retornar a diferença em um campo JTextField, como formato inteiro.

Exemplo Hora Inicial: 13:00:00
Exemplo Hora Final: 14:00:00

Horas Trabalhadas: 1

O método que eu estou utilizando está retornando sempre o valor “0” nas horas trabalhadas!

Segue código do método e chamada do mesmo:

private void calcularDiferencaHoras(String horaInicial, String horaFinal, JTextField campo){
        SimpleDateFormat sdf1 = new SimpleDateFormat(horaInicial);
        SimpleDateFormat sdf2 = new SimpleDateFormat(horaFinal);
        try {
            double horaInic = sdf1.getCalendar().getTimeInMillis();
            double horaFim = sdf2.getCalendar().getTimeInMillis();

            double diferencaHoras = horaFim - horaInic;

            campo.setText(Double.toString(diferencaHoras));
        } catch(Exception ex) {
            JOptionPane.showMessageDialog(rootPane, "Ocorreu um erro ao calcular as Horas Trabalhadas!", "Atenção", JOptionPane.ERROR_MESSAGE);
            campo.setText("");
        }
    }

Chamada do método:
calcularDiferencaHoras(jFTHoraInicial.getText(), jFTHoraFinal.getText(), jTFHorasTrabalhadas);

Quem puder colaborar desde já agradeço!

Acredito que nas linhas:

SimpleDateFormat sdf1 = new SimpleDateFormat(horaInicial);
SimpleDateFormat sdf2 = new SimpleDateFormat(horaFinal);

o valor de horaInicial e horaFinal seja 13:00:00 e 14:00:00 correto?
se sim, este é seu problema, pois o construtor de SimpleDateFormat deve receber uma MASCARA para posteriormente fazer o PARSE do valor. E vc informou um valor no lugar da mascara.

tente:

SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm:ss");
Date d1 = sdf1.parse(horaInicial);

Fiz conforme me indicou, agora ele trás um resultado, usando o exemplo de hora inicial 13:00:00 e hora final 14:00:00 ele deveria me retornar o valor esperado que é 1, porem ele me retorna o valor 3600000.0, saberia dizer porque isso ocorre ou oque deveria mudar ?

Segue abaixo método alterado:

private void calcularDiferencaHoras(String horaInicial, String horaFinal, JTextField campo){
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        try {
            Date horaIni = sdf.parse(horaInicial);
            Date horaFim = sdf.parse(horaFinal);
            
            double horaI = horaIni.getTime();
            double horaF = horaFim.getTime(); 
            
            double diferencaHoras = horaF - horaI;

            campo.setText(Double.toString(diferencaHoras));
        } catch(Exception ex) {
            JOptionPane.showMessageDialog(rootPane, "Ocorreu um erro ao calcular as Horas Trabalhadas!", "Atenção", JOptionPane.ERROR_MESSAGE);
            campo.setText("");
        }
    }

Não, não. Está certo!
Você está pegando o time de cada valor e subtraindo-os.
O time nada mais é do que os MILISEGUNDOS do objeto.
Subtraindo-os você tem a diferença de milisegundos entre um e outro. Para chegar a horas de diferença vc precisa calcular/converter.

Obs.: Recomendo usar long ao invés do double.
3600000ms / 1000 / 60 / 60 = 1 hr

Agora entendi o que acontece quando calculamos horas, deu tudo certo!
muito obrigado por sua ajuda @Rodrigo_Void, fico extremamente agradecido!