Dúvidas com Gregorian Calendar

Estou fazendo o seguinte calculo …só que ele não está gerando totalmente certo, tem linhas que ele tinha que remover mas ele está exibindo …
meu supervisor pediu pra mim usar o gregorian calendar…
mas não conheço o Gregorian Calendar…
fiz umas pesquisas também mas sem muito sucesso…

vocês poderiam me ajudar ??

qual seria a melhor maneira de utilizá-lo ??

percebi que o Gregorian usam bastante pra pegar data do sistema…
e no meu caso. .que passo a data como parametro ?

     if ((comp.getEntradaTS() != null && comp.getEntradaBio() != null)  
                        && (comp.getSaidaTS() != null && comp.getSaidaBio() != null)) {  
      
                    SimpleDateFormat df = new SimpleDateFormat("HH:mm");  
      
                    entTs = df.parse(comp.getEntradaTS());  
                    entBt = comp.getEntradaBio();  
                    saiTs = df.parse(comp.getSaidaTS());  
                    saiBt = comp.getSaidaBio();  
                      
                    if (entTs.after(entBt)) {  
                        diferenca = new Date(entBt.getTime() - entTs.getTime());  
                        diferencaEnt = diferenca.getMinutes();  
                    } else if (entTs.before(entBt)) {  
                        diferenca = new Date(entTs.getTime() - entBt.getTime());  
                        diferencaEnt = diferenca.getMinutes();  
                    }  
                    if (saiTs.after(saiBt)) {  
                        diferenca = new Date(saiTs.getTime() - saiBt.getTime());  
                        diferencaSai = diferenca.getMinutes();  
                    } else if (saiTs.before(saiBt)) {  
                        diferenca = new Date(saiBt.getTime() - saiTs.getTime());  
                        diferencaSai = diferenca.getMinutes();  
                    }  
                    
                    //faz a comparação das duas diferenças, de entrada e saída, e se for menor ou igual a 5 ele remove da lista.  
                    if ((diferencaEnt <= LIMITE_MINUTO) && (diferencaSai <= LIMITE_MINUTO)) {  
                        listComp.remove(comp);  
                    }  
                }  

Obrigado .

Para calcular diferenças entre datas (que é o seu caso), não use java.util.Date nem java.util.Calendar.

É que as duas classes não são apropriadas para esse fim (fazer contas com intervalos de tempos), e infelizmente é o que você tentou fazer. Tanto java.util.Date quanto java.util.Calendar representam um instante absoluto no tempo em milissegundos, não uma diferença entre duas datas em milissegundos.

Pode usar o Joda-Time ou então fazer as coisas na mão (no seu caso parece ser mais simples).

[quote=entanglement]Para calcular diferenças entre datas (que é o seu caso), não use java.util.Date nem java.util.Calendar.

É que as duas classes não são apropriadas para esse fim (fazer contas com intervalos de tempos), e infelizmente é o que você tentou fazer. Tanto java.util.Date quanto java.util.Calendar representam um instante absoluto no tempo em milissegundos, não uma diferença entre duas datas em milissegundos.

Pode usar o Joda-Time ou então fazer as coisas na mão (no seu caso parece ser mais simples).

[/quote]

Obrigado. estou pesquisando sobre Joda-Time…

mas me tira uma duvida… quando você diz fazer as coisas na mão . .

como seria isso ??

Me tira outra dúvida…

como faria isso com Gregorian calendar ??
porque pelo que parece o Gregorian Calendar tem métodos de comparação próprios pra isso né…

if ((diferencaEnt <= LIMITE_MINUTO) && (diferencaSai <= LIMITE_MINUTO)) {    
                   listComp.remove(comp);    
               }  

[quote=GNunesOliveira][quote=entanglement]Para calcular diferenças entre datas (que é o seu caso), não use java.util.Date nem java.util.Calendar.

É que as duas classes não são apropriadas para esse fim (fazer contas com intervalos de tempos), e infelizmente é o que você tentou fazer. Tanto java.util.Date quanto java.util.Calendar representam um instante absoluto no tempo em milissegundos, não uma diferença entre duas datas em milissegundos.

Pode usar o Joda-Time ou então fazer as coisas na mão (no seu caso parece ser mais simples).

[/quote]

Obrigado. estou pesquisando sobre Joda-Time…

mas me tira uma duvida… quando você diz fazer as coisas na mão . .

como seria isso ??
[/quote]

Vou dar um exemplinho. Digamos que você esteja querendo saber a diferença, em minutos, de dois horários no ponto. Você poderia escrever um método como este:

// Exemplo: "12:00" - "08:30" dá 210 minutos. --> diferencaEmMinutos (12, 00, 08, 30) == 210
public static int diferencaEmMinutos (int hora1, int minuto1, int hora2, int minuto2) {
    // Converter hora1 e minuto1 em minutos
    int minutos1 = hora1 * 60 + minuto1;
    // Converter hora2 e minuto2 em minutos
    int minutos2 = hora2 * 60 + minuto2;
    // Retornar a diferença entre hora1 e hora2
    return minutos1 - minutos2;
}