Data de ontem

Oiii gente… tô com um probleminha… tenho o seguinte código

public boolean fecharCaixa(RegistroCaixa r) throws SQLException {

		DAOFactory dao = DAOFactory.getDAOFactory(DAOFactory.MYSQL);

		VendaDAO vdao = dao.getVendaDAO(DAOFactory.READ_ONLY);

		String sql = "update tb_registro_caixa set vl_caixa_final_dinheiro = ?, "
				+ "vl_caixa_final_cheque = ?, vl_caixa_final_cartao = ? ,"
				+ "sg_status_caixa = ? "
				+" where cd_numero_caixa = ? "
				+ "and dt_registro_caixa = ? and id_usuario = ? " 
				+ "and sg_status_caixa = 'A'";
		PreparedStatement stmt = this.connection.prepareStatement(sql);

		stmt.setDouble(1, vdao.getValorVendasComDinheiro(r.getId()));
		stmt.setDouble(2, vdao.getValorVendasComCheque(r.getId()));
		stmt.setDouble(3, vdao.getValorVendasComCartao(r.getId()));
		stmt.setString(4, "F");
		stmt.setShort(5, r.getNumeroCaixa());
	
		if(Calendar.HOUR_OF_DAY >= 0 && Calendar.HOUR_OF_DAY <= 8){
			Calendar today = Calendar.getInstance();
			today.setTime(new Date());
			today.add(Calendar.DAY_OF_MONTH, -1);
								
			SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
			stmt.setString(6, f.format(today));
		}else{
			SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
			stmt.setString(6, f.format(new Date()));
		}
			
		stmt.setLong(7, r.usuario.getId());

		boolean retorno;
		if (stmt.executeUpdate() > 0) {
			retorno = true;
		} else {
			retorno = false;
		}

		stmt.close();

		return retorno;
	}

Gostaria que se fosse apos a meia noite e antes das 8 da manha… ele pega-se a data anterior… e fecha-se o caixa…porem ele não pega… e acaba dando um erro…

alguem saberia me dizer o que eu fiz de errado nesta parte do codi

if(Calendar.HOUR_OF_DAY >= 0 && Calendar.HOUR_OF_DAY <= 8){
			Calendar today = Calendar.getInstance();
			today.setTime(new Date());
			today.add(Calendar.DAY_OF_MONTH, -1);
								
			SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
			stmt.setString(6, f.format(today));
		}else{
			SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
			stmt.setString(6, f.format(new Date()));
		}

Não sei se ficou muito claro… mas bom… se alguem puder me ajudarr…

Calendar.HOUR_OF_DAY é uma CONSTANTE cara, ela nao tem o hora do dia e sim é um identicador para se pegar a hora…

assim:

Calendar cal = Calemdar.getInstance();
int horaDoDia = cal.get( Calendar.HOUR_OF_DAY );

if (horaDoDia  <= 8) ...

faz assim:

[code]
Calendar today = Calendar.getInstance();
today.setTime(new Date());

if(today.get(Calendar.HOUR_OF_DAY) >= 0 && today.get(Calendar.HOUR_OF_DAY) <= 8) {
today.add(Calendar.DAY_OF_MONTH, -1);
SimpleDateFormat f = new SimpleDateFormat(“yyyy-MM-dd”);
stmt.setString(6, f.format(today));
} else {
SimpleDateFormat f = new SimpleDateFormat(“yyyy-MM-dd”);
stmt.setString(6, f.format(new Date()));
}[/code]