Como somar campo Date(dd/MM/yyyy) com int?

3 respostas
P

Tenho uma rotina onde obtenho um campo date da seguinte forma:

Date data = null;
        String dataTexto = new String(dataInicial);
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        
        format.setLenient(false);
        try {
            data = format.parse(dataTexto);
        } catch (ParseException ex) {
            ex.printStackTrace();
        }

Agora eu tenho um int com o número de dias que preciso acrescentar nessa data para em seguida exibir a nova data no formato dd/MM/yyyy. To tentando aqui mas tá complicado. Alguém tem alguma dica?

3 Respostas

rmarin

Calendar!!!

public static void main(String[] args) {
        
        int dias = 62;

        Date date = new Date();
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        
        System.out.println(c.getTime());
        c.add(Calendar.DAY_OF_YEAR, dias);
        System.out.println(c.getTime());
        
    }
P

Cara valeu mesmo. A única coisa que adicionei ao seu exemplo foi uma forma de formatar a data exibida forma dd/MM/yyyy:

public static void main(String[] args) {
         
         int dias = 3;
 
         SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
         //sdf.format(new Date());
         
         Date date = new Date();
         Calendar c = Calendar.getInstance();
         c.setTime(date);
         
         System.out.println(sdf.format(date));
         c.add(Calendar.DAY_OF_YEAR, dias);
         System.out.println(sdf.format(c.getTime()));   
     }
rmarin

Cara você está fazendo um parse com o toString() de um Date nesta linha:

String dataTexto = new String(c.getTime().toString());

c.getTime() devolve uma referencia para um objeto do tipo java.util.Date, e você está chamando o toString() deste objeto, o que resulta a String “Wed Sep 27 08:31:44 BRT 2006”. Você não deve fazer isso, você deve formatar a data direto, assim:

SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");

//Outras linhas do código...

String str = df.format(c.getTime());

Quanto a esta parte do seu código:

System.out.println(c.DAY_OF_MONTH + "/" + c.MONTH + "/" + c.YEAR);

Esquece que tá tudo errado!
Aconselho a pesquisar um pouco sobre a classe Calendar.

:thumbup:

Criado 26 de julho de 2006
Ultima resposta 27 de jul. de 2006
Respostas 3
Participantes 2