Obter data de dias anteriores[resolvido]

7 respostas
sandroalm.silva

como eu posso obter a data de 60 DIAS atrás, contando do dia atual?

7 Respostas

E

É mais ou menos assim:

Calendar cal = Calendar.getInstance();
cal.add (Calendar.DAY_OF_MONTH, -60);
Date dt = cal.getTime();
sandroalm.silva

funcionou perfeitamente, eu tava usando o método roll , não tinha pensado em usar o negativo , rsrs obrigado!

edmarr

Pergunta pq vc estava usando roll ?

sandroalm.silva

porque foi oque eu lí que mais parecia com oque eu queria fazer, pelo que eu entendi com o meu ingles humilde heauaeh

edmarr

rsrsr , ta certo do mais bom estudo .
Nao esqueça de editar o tópico , se estiver satisfeito eh claro .

E

O método “roll” é usado quando você quer “uma data 2 meses antes”, não “uma data 60 dias antes”. Uma “data 2 meses antes” é algo parecido com

O problema, é claro, é que se você usar “roll” com uma data em janeiro / 2010 (por exemplo), o resultado não será novembro/2009 e sim novembro/2010, o que é obviamente indesejado.

Por exemplo,

import java.util.*;
import java.text.*;

class TesteAddRoll {
    public static void main(String[] args) {
        DateFormat df = new SimpleDateFormat ("dd/MM/yyyy HH:mm:ss");
        Calendar cal1 = Calendar.getInstance();
        System.out.println ("Hoje          : " + df.format (cal1.getTime())); 
        cal1.add (Calendar.DAY_OF_MONTH, -360);
        System.out.println ("Hoje - 360 dias: " + df.format (cal1.getTime()));
        Calendar cal2 = Calendar.getInstance();
        // Note que "roll" não dá o resultado esperado, porque ele só altera 
        // o mês, não o ano. 
        cal1.roll (Calendar.MONTH, -12);
        System.out.println ("Hoje - 12 meses: " + df.format (cal2.getTime()));
    }
}
B

Roll não faz o que você acha que ele faz:

Calendar c = GregorianCalendar.getInstance();

      for (int i = 0; i < 4; i++)
      {
         c.roll(Calendar.MONTH, true);
         System.out.println(c.getTime());
      }


Sun Nov 08 13:59:18 AMT 2009
Tue Dec 08 13:59:18 AMT 2009
Thu Jan 08 13:59:18 AMT 2009
Sun Feb 08 13:59:18 AMT 2009

Note que ele não muda o ano. Um roll de 60 dias não mudaria o mês.

Criado 8 de outubro de 2009
Ultima resposta 8 de out. de 2009
Respostas 7
Participantes 4