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: