Subtrair datas

4 respostas
caio.gamma

E ae pessoal, beleza?

Eu tô desenvolvendo um tipo de relatório em que o usuário entra com uma data e eu tenho que mostrar o relatório dos ultimos 30 dias.

Essa é a minha lógica…

connection = OracleConnection.getConection();
selectData = connection.prepareStatement("SELECT * FROM Tabela1 WHERE DT_HR_TENTATIVA = ? AND FL_PROCESSO = ?");
selectData.setDate(1, new java.sql.Date(data.getTime()));
selectData.setString(2, "S");
			
	ResultSet rs = selectData.executeQuery();
			
	String msg = null;
	for(int i = 0; i < 30; i++){
		int qtdProcesso = 0;
		while(rs.next()){
			qtdProcesso++;
		}
			msg += data.toString() +" - "+ qtdProcesso +"\n";
			//Aqui eu tenho que subtrair um dia da data que o usuário entrou.
	}	
			
	JOptionPane.showMessageDialog(null, msg);

Como faço para subtrair um dia da data que o usuário entrou?

Desde já agradeço!

4 Respostas

evandroshx

caio, vc pode fazer o seguinte:

public String calculaData( String data, int qtdeDias ) {
               GregorianCalendar gc = new GregorianCalendar( 
                             Integer.parseInt( data.substring( 6, data.length() ).trim().replace( ' ', '0' ) ),
                             Integer.parseInt( data.substring( 3, 5 ).trim().replace( ' ', '0' ) ) - 1,
                             Integer.parseInt( data.substring( 0, 2 ).trim().replace( ' ', '0' ) )     );

                gc.add( Calendar.DAY_OF_MONTH, qtdeDias );  // Para subtrair basta passar um valor negativo

                String novaData = gc.get( Calendar.DAY_OF_MONTH ) + "/" +
                                           ( gc.get( Calendar.MONTH ) + 1 ) + "/" +
                                           gc.get( Calendar.YEAR ) ;

                return novaData;
}

acho que resolve o seu problema.

[]s

sergiotaborda
Date dataDoUsuario = ....

Calendar calendar = Calendar.getInstance();

calendar.setTime(dataDoUsuario);
calendar.add(Calendar.DATE, -1);

Date antesDataDoUsuario = calendar.getTime();
jamikas

Esta Deprecated, mas da pra usar a seguinte função:

//Caculo data comparada.
		Date dataa = new Date();
		dataa.setDate(dataa.getDate() - quantidadeDias);

Abços,

caio.gamma

Valeu pelas respostas!

Alem de me ajudar com o meu problema me ajudou a entender como funciona…

Brigadão!

;D

Criado 10 de setembro de 2007
Ultima resposta 11 de set. de 2007
Respostas 4
Participantes 4