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 horariohoje=newDate();//Comparaçãobooleana=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;}}
// subistitui issohoje=newdate(System.currentTimeMillis());// e issoif(hoje.equals(caixa.getHorarioFechaCaixa())
se não der certo avise.
michetti
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()
M
matheus14
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çãoSimpleDateFormatt=newSimpleDateFormat("HH:mm:ss");//Pegar o horárioStringho,hf;ho=t.format(newDate(System.currentTimeMillis()));hf=t.format(caixa.getHorarioFechaCaixa());//ComparaçãoSystem.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;}}
michetti
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;
}
}
M
matheus14
Está dando erro, na comparação (hf > ho ). bad operand types for binary operator ‘>’
michetti
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;
}
}
M
matheus14
Eu usei o .compareTO() funcionou, se tiver algo a acrescentar ou a arrumar meu código, agradeço.
//Fechamento automatico if(v2==false){//formataçãoSimpleDateFormatt=newSimpleDateFormat("HH:mm:ss");//Pegar o horarioStringho,hf;ho=t.format(newDate(System.currentTimeMillis()));hf=t.format(caixa.getHorarioFechaCaixa());//ComparaçãoSystem.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;}}
michetti
O que o > 0 faz?
M
matheus14
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
A
andy11x
Espero que ajude…
publicstaticvoidmain(String[]args){//String horaAtualTeste = "17:31"; StringhoraAtual=newSimpleDateFormat("HH:mm").format(newDate().getTime());// Pega hora atual do SistemaStringhoraFecha="17:30";try{if(isComparaHora(horaAtual,horaFecha)){System.out.println("Caixa Aberto");}else{System.out.println("Caixa Fechado");}}catch(ParseExceptionex){System.out.println("Horário Inválido...");}}privatestaticbooleanisComparaHora(StringhoraAtual,StringhoraFecha)throwsParseException{booleanfechaCaixa=false;if(!newSimpleDateFormat("HH:mm").parse(horaFecha).before(newSimpleDateFormat("HH:mm").parse(horaAtual))){fechaCaixa=true;}returnfechaCaixa;}
D
daniesouza
cara faz assim que deve resolver
//Fechamento automatico if(v2==false){//formatação SimpleDateFormatt=newSimpleDateFormat("HH:mm:ss");//Pegar o horario Stringho,hf;Calendarcalendar=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);Dateho=calendar.getTime();SimpleDateFormatt=newSimpleDateFormat("HH:mm:ss");try{Datehf=t.parse(caixa.getHorarioFechaCaixa());}catch(ParseExceptione){// TODO Auto-generated catch blocke.printStackTrace();}longhoraMilis=ho.getTime();longhoraFinalMillis=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;}}