Comparação de Horário

Estou tentando desenvolver um código, para o fechamento automático de caixa.
Este código para buscar a data e o horário do banco (My Sql).

if(v1==false){
      SimpleDateFormat t = new SimpleDateFormat("HH:mm:ss");
       hoje = new Date();
         caixa = mDAO.buscaData(hoje);
                   if(caixa.getHorarioFechaCaixa() == null){
                       v1 = false;
                   }else{
                       CampoFecha.setText("Fechamento: " + t.format(hora));
                       CampoFecha.setToolTipText("Fechamento: " + t.format(hora));
                       v1 = true;
                   }
}

Este código onde estou com o problema, quero comparar o horário do banco com o horário do sistema, se o o horário do sistema foi maior ou igual do banco fecha, se não ele continua até dar o horário. Só que quando eu comparo ele fecha antes, do horário do banco.

//Fechamento automatico               
       if(v2==false){
           //Pegar o horario
           hoje = new Date();
           //Comparação
           boolean a = hoje.after(caixa.getHorarioFechaCaixa());
           System.out.print(d+ " "+caixa.getHorarioFechaCaixa());
                     if(true==a){
                         System.out.print("Fechar o Caixa");
                         v2=true;
                     } else {
                      System.out.print("Caixa Ainda Aberto");
                         v2=false;
                     }
                    }

Agradeço desde já a atenção.

// subistitui isso
hoje = new date(System.currentTimeMillis());
// e isso
if(hoje.equals(caixa.getHorarioFechaCaixa())

se não der certo avise.

A hora que o System.currentTimeMillis() pega é a data super completa, se a data que você esta pegando com caixa.getHorarioFechaCaixa() não for no mesmo formatado que a do System.currentTimeMillis() não vai conseguir comparar.

O melhor a se fazer é usar o SimpleDateFormat t = new SimpleDateFormat(“HH:mm:ss”); nos 2 métodos que você usa para pegar as datas. Converte as duas em Strings que fica mais fácil ainda para comparar, ai você o equals()

Juntando o que me disseram funcionou, só que tem um problema ainda, ele só fecha o caixa se o horário foi igual, eu precisaria que fechasse também se o horário fosse maior que o horário do banco.
Exemplo o horário do banco é “17:30” se do sistema for maior que isso feche também, pelo .equals(), não consegui fazer está comparação de maior.

//Fechamento automático               
       if(v2==false){
           //formatação
           SimpleDateFormat t = new SimpleDateFormat("HH:mm:ss");
           //Pegar o horário
           String ho, hf;
           ho = t.format(new Date(System.currentTimeMillis()));
           hf = t.format(caixa.getHorarioFechaCaixa());
           //Comparação
           System.out.print(ho+" "+hf+" ");
           if(ho.equals(hf)){
                         System.out.print("Fechar o Caixa");
                         v2=true;
                     } else {
                      System.out.print("Caixa Ainda Aberto");
                         v2=false;
                     }
                    }

Testa ai para ver se da certo…

if(ho.equals(hf) || hf > ho){ System.out.print("Fechar o Caixa"); v2=true; } else { System.out.print("Caixa Ainda Aberto"); v2=false; } }

Está dando erro, na comparação (hf > ho ). bad operand types for binary operator ‘>’

Deve ser porque nao tem como comparar esse tipo de variável usando MAIOR ou MENOR, no caso vai ter que usar o metódo compareTO();

tenta assim

Resultado = hf.compareTo(ho); if(ho.equals(hf) || resultado.equals(ho)){ //onde esta equals(ho) talvez seja hf também porque a variavel resultado compara se o HF é maior que o HO System.out.print("Fechar o Caixa"); v2=true; } else { System.out.print("Caixa Ainda Aberto"); v2=false; } }

Eu usei o .compareTO() funcionou, se tiver algo a acrescentar ou a arrumar meu código, agradeço.

//Fechamento automatico               
       if(v2==false){
           //formatação
           SimpleDateFormat t = new SimpleDateFormat("HH:mm:ss");
           //Pegar o horario
           String ho, hf;
           ho = t.format(new Date(System.currentTimeMillis()));
           hf = t.format(caixa.getHorarioFechaCaixa());
           //Comparação
           System.out.print(ho+" "+hf+" ");
           if(ho.equals(hf) || (ho.compareTo(hf) >0)){
                         System.out.print("Fechar o Caixa");
                         v2=true;
                     } else {
                      System.out.print("Caixa Ainda Aberto");
                         v2=false;
                     }
                    }

O que o > 0 faz? :stuck_out_tongue:

Ele faz a função de comparação, se o resultado do (ho.compareTo(hf)) > 0 que dizer que horário do sistema é maior do que o do banco ai fecha. Li neste artigo:
http://www.guj.com.br/java/231755-usando-compareto

Espero que ajude…

public static void main(String[] args){        
   //String horaAtualTeste = "17:31"; 
   String horaAtual = new SimpleDateFormat("HH:mm").format(new Date().getTime());// Pega hora atual do Sistema
   String horaFecha = "17:30";
   try{
         if(isComparaHora(horaAtual, horaFecha)){
              System.out.println("Caixa Aberto");                
         }else{
             System.out.println("Caixa Fechado");                
         }
   }
   catch(ParseException ex){
       System.out.println("Horário Inválido...");                        
   }
 }
    
private static boolean isComparaHora(String horaAtual, String horaFecha) throws ParseException {
    boolean fechaCaixa = false;     
    if(!new SimpleDateFormat("HH:mm").parse(horaFecha).before(new SimpleDateFormat("HH:mm").parse(horaAtual))){
        fechaCaixa = true;
    }        
    return fechaCaixa;
}

cara faz assim que deve resolver

[code]

//Fechamento automatico
if(v2==false){
//formatação
SimpleDateFormat t = new SimpleDateFormat(“HH:mm:ss”);
//Pegar o horario
String ho, hf;
Calendar calendar = Calendar.getInstance();

calendar.set(Calendar.YEAR, 0);
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 0);
	
calendar.set(Calendar.HOUR, 17);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
	
	
Date ho = calendar.getTime();
	
	
SimpleDateFormat t = new SimpleDateFormat("HH:mm:ss");
	
try {
		Date hf = t.parse(caixa.getHorarioFechaCaixa());
} catch (ParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
} 

       
       long horaMilis = ho.getTime();
       long horaFinalMillis = hf.getTime();

       //Comparação  
       System.out.print(ho+" "+hf+" ");  
       if(horaMilis > horaFinalMillis )){  
                     System.out.print("Fechar o Caixa");  
                     v2=true;  
                 } else {  
                  System.out.print("Caixa Ainda Aberto");  
                     v2=false;  
                 }  
                }  [/code]