Pessoal, estou com o seguinte problema:
Tenho uma data na base de dados, por exemplo: 12-09-2009
Mais minha rotina ta mostrando 12-08-2009 1 dia a menos do que tenho na base.
O código que eu uso para formatar a data é:
Calendar calTmp = Calendar.getInstance();
calTmp.add(Calendar.MONTH, -6);
Date farViewLimit = calTmp.getTime();
calTmp = Calendar.getInstance();
calTmp.add(Calendar.WEEK_OF_YEAR, -2);
Date recentViewLimit = calTmp.getTime();
Não sei se é o caso, mas vejo gente escrevendo Gregorian Calendar aqui pra justificar a contagem de 0 a 11.
Gregorian Calendar é o calendário normal que a gente usa! De Janeiro a Dezembro, de 1 a 12 com os números de dias que conhecemos nos meses, em oposição ao calendário Juliano, que era utilizado anteriormente.
Esse lance de 0 a 11 não tem nada a ver com Gregorian Calendar, é coisa da classe Calendar do java.
O fato de java.util.Calendar retornar 0 para Calendar.JANUARY é um vestígio de como essas coisas são tratadas em C. Gostaria de saber por que cargas d’água a “struct tm” define janeiro como 0:
Opa . .
eu sei que não funciona . .
mandei me baseando na correção que o PabloSairava fez no topico dizendo :
[size=9]**Só pra deixar uma coisa clara.
Não sei se é o caso, mas vejo gente escrevendo Gregorian Calendar aqui pra justificar a contagem de 0 a 11.
Gregorian Calendar é o calendário normal que a gente usa! De Janeiro a Dezembro, de 1 a 12 com os números de dias que conhecemos nos meses, em oposição ao calendário Juliano, que era utilizado anteriormente.
Esse lance de 0 a 11 não tem nada a ver com Gregorian Calendar, é coisa da classe Calendar do java. **[/size]
E sim, no calendar do Java janeiro é o mês 0. Por isso, continue somando 1 (e não esqueça de subtrair 1 na hora de jogar o valor de volta pro calendar, se for o caso).
Tudo bem eu entendi .
mais isso e so na teoria roda esse codigo ai e ele vai te retornar os meses de 0 a 11.
public static void mesAtual() {
Date dataAtual = new Date();
GregorianCalendar data = new GregorianCalendar();
int mes = data.get(GregorianCalendar.MONTH) ;
for (int i = 0; i <12 ; i++) {
System.out.println(mes);
mes--;
}
}
se preferir muda seu calendar para janeiro e tira esse for … ele vai te retornar o mês como 0 .
entao tecnicamente deve se usar (GregorianCalendar.MONTH) +1 para retornar os mês da forma que usamos.