Galera, alguém pode me dizer porque raios esse programa tá imprimindo 5:
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class Calendario{
public static void main(String args[]){
Calendar calendar = new GregorianCalendar();
calendar.setLenient(false);
calendar.setTimeInMillis(new Date().getTime());
System.out.println(calendar.get(Calendar.MONTH));
}
}
tentei executar o exemplo que está na API, de GregorianCalendar, mas ele insiste em me retornar 5 para o mês, e o relógio aqui está certo.
Este problema está acontecendo mesmo quando eu pedo uma data do banco de dados, de um evento qualquer, e tento apresentar. Ele me retorna o mês errado, sempre um a menos.
[quote=jgbt]não sei dizer o pq, mas os meses em java vão de 0 a 11.
[]'s
[/quote]
Isso é devido à herança da linguagem C, onde a estrutura struct tm (que é mais ou menos parecida com a GregorianCalendar do Java) retorna os meses de 0 a 11. A razão é que dessa maneira, seria possível imprimir os meses usando um array de strings sem ter uma posição “desperdiçada” (motivo terrivelmente idiota, mas é herança desse tempo em que o sr. James Gosling, que afinal de contas era programador C, tentava deixar as coisas as mais compatíveis possíveis com o C).