[RESOLVIDO]Problema ao pegar a data de ontem!

6 respostas
Luan_Kevin

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);

6 Respostas

E

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.

E
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
ErickRAR
data.add(Calendar.DAY_OF_YEAR, -1);
//ou
data.add(Calendar.DATE, -1);
Luan_Kevin
ErickRAR:
data.add(Calendar.DAY_OF_YEAR, -1);

Obrigado!

tinha tentados todos menos esse!

:thumbup:

E

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
Luan_Kevin

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

Obrigado pela atenção! :thumbup:

Criado 6 de julho de 2012
Ultima resposta 6 de jul. de 2012
Respostas 6
Participantes 3