Comapração Hora + Próxima Data

Olá pessoal , por favor tirem uma dúvida…



Preciso na hora de fazer uma inserção no banco , comparar a hora.Ou seja se o que a pessoa inserir for depois das 18hrs , será gravado com a data do dia seguinte…

Qual a melhor forma de fazer esta comparação com a hora e qual a melhor forma para gravar a data do dia seguinte no banco???



Obrigado pela ajuda!!



Felipe Pittella.

A primeira coisa que você paderia fazer é criar uma instancia de Calendar representando a hora limite:



Code:


public java.util.Calendar getHoraLimite() {

// Supondo que a hora limite é para o dia corrente.

java.util.Calendar horaLimite = new java.util.GregorianCalendar();

// A hora do objeto criado é a hora corrente. Portanto, é necessário ajustar para a hora desejada

horaLimite.set(java.util.Calendar.HOUR_OF_DAY, 18);

horaLimite.set(java.util.Calendar.MINUTE, 0);

horaLimite.set(java.util.Calendar.SECOND, 0);

horaLimite.set(java.util.Calendar.MILLISECOND, 0);

return horaLimite;

}




Daí no seu código você poderia fazer assim:

Code:


java.util.Calendar horaLimite = getHoraLimite() ;



// faz a comparação:

if(minhahora.before(horaLimite) {

// faz as coisas para hoje

} else {

// agenda para amanhã

}




Será que isso serve?

E para gravar no banco você pode usar o método set(ano, mes, dia) do Calendar para colocar o dia seguinte no objeto, depois o getTime() para retornar um objeto Date. Aí utilizar esse objeto Date para gravar no banco (se você já estiver usando prepared statements ou algum outro método para formatar objetos Date).

Ou então simplesmente passar a data com o dia certo como String para o banco.

Calendar agora = Calendar.getInstance(); // data e hora atuais

if (agora.get(Calendar.HOUR_OF_DAY) > 18) { // passou das 18hs

agora.add(Calendar.DAY_OF_MONTH, 1); // adiciona um dia

}



para persistir no banco, crie um bind para a data (prepared statement) e use o método setTimeStamp

stmt.setTimeStamp(1, new Timestamp(agora.getTime().getTime()));



não use setDate (porque em alguns drivers não grava a hora) nem setTime (porque não grava a data)



boa sorte! :-]

Valeu pessoal, deu certo…

Obrigado pela atenção e pela ajuda.!!!





Felipe Pittella.