[RESOLVIDO]Problema ao pegar a data de ontem!

Boa tarde galera do GUJ!

hoje me deparei com um problema, quando tento buscar a data do dia anterior
sendo hoje por exemplo (01/07/2012) me retorna a data (31/07/2012),
alguém sabe por que e como resolver?

o código que eu to usando é esse

Calendar calendar = new GregorianCalendar(); calendar.add(Calendar.DAY_OF_MONTH, -1);

Você não está interpretando incorretamente os resultados? Vamos mostrar exatamente que add (Calendar.DAY_OF_MONTH, -1) está certo. Só 2 min para o exemplo completo e testado.

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

class TesteCalendar {
    public static void main (String[] args) throws ParseException {
		DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");
		Calendar cal = Calendar.getInstance();
		cal.set (Calendar.DATE, 1);
		cal.set (Calendar.MONTH, Calendar.JULY);
		cal.set (Calendar.YEAR, 2012);
		System.out.println (df.format (cal.getTime()));
		cal.add (Calendar.DATE, -1);
		System.out.println (df.format (cal.getTime()));
    }
}

O resultado é:

01/07/2012
30/06/2012
data.add(Calendar.DAY_OF_YEAR, -1);
//ou
data.add(Calendar.DATE, -1);

[quote=ErickRAR][code]
data.add(Calendar.DAY_OF_YEAR, -1);

[/code][/quote]

Obrigado!

tinha tentados todos menos esse!

:thumbup:

DATE é a mesma coisa que DAY_OF_MONTH, aliás. Note que nesse caso em particular as três soluções funcionam.

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

class TesteCalendar {
    public static void main (String[] args) throws ParseException {
		DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");
		Calendar cal = Calendar.getInstance();
		System.out.println ("Calendar.DATE");
		cal.set (Calendar.DATE, 1);
		cal.set (Calendar.MONTH, Calendar.JULY);
		cal.set (Calendar.YEAR, 2012);
		System.out.println (df.format (cal.getTime()));
		cal.add (Calendar.DATE, -1);
		System.out.println (df.format (cal.getTime()));
		System.out.println ("Calendar.DAY_OF_MONTH");
		cal.set (Calendar.DATE, 1);
		cal.set (Calendar.MONTH, Calendar.MARCH);
		cal.set (Calendar.YEAR, 2012);
		System.out.println (df.format (cal.getTime()));
		cal.add (Calendar.DAY_OF_MONTH, -1);
		System.out.println (df.format (cal.getTime()));
		System.out.println ("Calendar.DAY_OF_YEAR");
		cal.set (Calendar.DATE, 1);
		cal.set (Calendar.MONTH, Calendar.JANUARY);
		cal.set (Calendar.YEAR, 2012);
		System.out.println (df.format (cal.getTime()));
		cal.add (Calendar.DAY_OF_YEAR, -1);
		System.out.println (df.format (cal.getTime()));
    }
}
Calendar.DATE
01/07/2012
30/06/2012
Calendar.DAY_OF_MONTH
01/03/2012
29/02/2012
Calendar.DAY_OF_YEAR
01/01/2012
31/12/2011

[quote=entanglement]DATE é a mesma coisa que DAY_OF_MONTH, aliás. Note que nesse caso em particular as três soluções funcionam.

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

class TesteCalendar {
    public static void main (String[] args) throws ParseException {
		DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");
		Calendar cal = Calendar.getInstance();
		System.out.println ("Calendar.DATE");
		cal.set (Calendar.DATE, 1);
		cal.set (Calendar.MONTH, Calendar.JULY);
		cal.set (Calendar.YEAR, 2012);
		System.out.println (df.format (cal.getTime()));
		cal.add (Calendar.DATE, -1);
		System.out.println (df.format (cal.getTime()));
		System.out.println ("Calendar.DAY_OF_MONTH");
		cal.set (Calendar.DATE, 1);
		cal.set (Calendar.MONTH, Calendar.MARCH);
		cal.set (Calendar.YEAR, 2012);
		System.out.println (df.format (cal.getTime()));
		cal.add (Calendar.DAY_OF_MONTH, -1);
		System.out.println (df.format (cal.getTime()));
		System.out.println ("Calendar.DAY_OF_YEAR");
		cal.set (Calendar.DATE, 1);
		cal.set (Calendar.MONTH, Calendar.JANUARY);
		cal.set (Calendar.YEAR, 2012);
		System.out.println (df.format (cal.getTime()));
		cal.add (Calendar.DAY_OF_YEAR, -1);
		System.out.println (df.format (cal.getTime()));
    }
}

Calendar.DATE 01/07/2012 30/06/2012 Calendar.DAY_OF_MONTH 01/03/2012 29/02/2012 Calendar.DAY_OF_YEAR 01/01/2012 31/12/2011 [/quote]

Obrigado pela atenção! :thumbup: