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