Diferença entre horas

bem, estou tenta fazer um calculo simples e horas para dar um resultado, de um sistema de lan house.
Coloquei um campo para digitar a hora de entrada e de saida, sendo que na hora de colocar a saida, o usuário não precisa pois já dah a hora atual, porém na hora de diminuir a hora saida - hora entrada ele dá um erro, acho que é pelos “:” que tem nos 2 horários. meu código está ai embaixoquem puder me ajudar pleaaaase , estou a 2 dias tentando fazer isso :smiley:

    private void tf_horaentrada2FocusLost(java.awt.event.FocusEvent evt) {                                          
        double diferencahoras,diferencaminutos,diferencahoraminutos,tempototalhoras; 
        diferencahoras = (Double.parseDouble(tf_horasaida.getText()) -
        Double.parseDouble(tf_horaentrada2.getText())) / (1000*60*60);
        diferencaminutos = (Double.parseDouble(tf_horasaida.getText()) -
        Double.parseDouble(tf_horaentrada2.getText())) / (1000*60);
        diferencahoraminutos =  diferencaminutos % 60;
        tf_tempototal.setText(String.valueOf(diferencahoraminutos+":"+diferencaminutos));
               
    }            

Se for ajudar o auxilio estou trabalhando no netbeans 5.5:D
Brigado

Como usuario informa a horario neste formato? hh:mm:ss
caso sim , vc precisa quebrar este horario onde encontrar : e transformando para hora, minutos , secundos e etc…

Pelo que entendi seu problema será resolvido dessa maneira:

private void tf_horaentrada2FocusLost(java.awt.event.FocusEvent evt) {                                            
     double diferencahoras,diferencaminutos,diferencahoraminutos,tempototalhoras;   
     diferencahoras = (Double.parseDouble(tf_horasaida.getText()) -  
     Double.parseDouble(tf_horaentrada2.getText())) / (1000*60*60);  
     diferencaminutos = (Double.parseDouble(tf_horasaida.getText()) -  
     Double.parseDouble(tf_horaentrada2.getText())) / (1000*60);  
     diferencahoraminutos =  diferencaminutos % 60;  
     tf_tempototal.setText(String.valueOf(diferencahoraminutos)+":"+String.valueOf(diferencaminutos));  
              
 } 

funciona como HH:mm

package conexaobd;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class hora
{
    public String hora;
    SimpleDateFormat horaformatada = new SimpleDateFormat ("HH:mm");

    public void hora()
    {
        Date horaatual = new Date();        
        hora = horaformatada.format(horaatual);
                    }
      }

Eu fiz uma classe por fora pra cadastrar o horário :smiley:

Euler , não consegu destaforma :x

c viu isso?

private void tf_horaentrada2FocusLost(java.awt.event.FocusEvent evt) {                                              
      double diferencahoras,diferencaminutos,diferencahoraminutos,tempototalhoras;     
      diferencahoras = (Double.parseDouble(tf_horasaida.getText()) -    
      Double.parseDouble(tf_horaentrada2.getText())) / (1000*60*60);    
      diferencaminutos = (Double.parseDouble(tf_horasaida.getText()) -    
      Double.parseDouble(tf_horaentrada2.getText())) / (1000*60);    
      diferencahoraminutos =  diferencaminutos % 60;    
     //aqui estava o erro essa eh a maneira certa de fazer a conversão
     tf_tempototal.setText(String.valueOf(diferencahoraminutos)+":"+String.valueOf(diferencaminutos));  
                 
 } 

seu erro estah nessa conversão tf_tempototal.setText(String.valueOf(diferencahoraminutos+":"+diferencaminutos));
o correto seria assim: tf_tempototal.setText(String.valueOf(diferencahoraminutos)+":"+String.valueOf(diferencaminutos));

vi cara , ajeitei este final

deu certo?

não :frowning:

Dá uma olhada no link abaixo, o ViniGodoy,
postou uma solução para se trabalhar com horas e com um exemplo funcional utilizando-se da
biblioteca JodaTime.

http://www.guj.com.br/posts/list/15/96784.java#520115

É isso aí! Só de olhar aquele código ali em cima me deu 4 tipos de medo.
Realmente, calcular datas com o Java não é fácil…

É muito melhor mesmo usar o JODA-Time:
http://joda-time.sourceforge.net/

E descomplicar sua vida! Aliás, essa API é tão legal que está sendo cogitada para se tornar parte do Java!

na minha pura inocencia em java
não seria simples (se tiver logicamente) um código pra retirar os “:” efetuar o calculo de subtração e converter pra horas?

Já deu uma olhadinha no link que a LadyShoT postou?
Acho que aquele é de longe o jeito mais fácil.

Desculpe mais ainda não consegui descifrar a forma de fazer isso com o joda time
estou a dias estudando ele :frowning:

poxa é complicadinho mesmo, ja trabalhei quando fiz um despertador java, ta por aí o tópico, mas vi que consome muito do computador.
estava lendo também:

mas vou continuar usando o Date, transformar tudo para segundos e tentar calcular assim,
passando por Strings e ints…
estava concatenando com stringbuilder, mas o parseint, nao funciona para string builder.

fui olhar este:

la :

[quote]or exemplo, tu pega os segundos, faz um “mod” (em Java é o operador %) com 60, ou seja, ele vai pegar o que der, isso serão os minutos e o resto serão os segundos, depois tu pega os minutos em faz outro mod, só que com 24, daí ele vai retornar as horas, o que sobrar serão os minutos. Aí tu terá hora, minuto e segundo…

Se der tempo, mas tarde eu boto um algoritmo legal aqui. [/quote]