Calendar.MONTH retorna mês errado

6 respostas
W

Olá, o código cal.get(Calendar.MONTH) retorna mês 3 e não 4.
O relógio e data da minha máquina estão corretos. "quarta-feira, 29 de abril de 2009"
No painel de controle->Opções regionais e de idioma está tudo configurado para Brasil.
Sistama Win XP Pro.
Se alguém souber o porquê, eu agradeço.

public class TesteData {

	public static void main(String[] args) {
		GregorianCalendar dataAtual = new GregorianCalendar();
        Date data = dataAtual.getTime();
		Calendar cal = null;
		cal = Calendar.getInstance();
		cal.setTime( data );
		try {
			int horas    = cal.get(Calendar.HOUR_OF_DAY);
				System.out.println("horas: " + horas);
			int minutos  = cal.get(Calendar.MINUTE);
				System.out.println("minutos: " + minutos);
			int segundos = cal.get(Calendar.SECOND);
				System.out.println("segundos: " + segundos);
			int ano = cal.get(Calendar.YEAR);
				System.out.println("Ano: " + ano);
			int mes = cal.get(Calendar.MONTH);
				System.out.println("mes: " + mes);
			int dia = cal.get(Calendar.DAY_OF_MONTH);
				System.out.println("dia: " + dia);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
Saída: horas: 11 minutos: 43 segundos: 50 Ano: 2009 [color=red]mes: 3[/color] <-- deveria ser 4 dia: 29

6 Respostas

T

get (Calendar.MONTH) retorna Calendar.APRIL, que é 3 (e não 4).

CUIDADO!

Isso é uma doideira herdada do C, onde janeiro é o mês zero, provavelmente para poder indexar em um array de nomes de meses.

peczenyj

http://java.sun.com/j2se/1.4.2/docs/api/constant-values.html#java.util.Calendar.APRIL

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html#APRIL

W

Eu preciso passar para um comando a data do sistema na hora em que um processo for executado. Nesse caso eu teria que sempre somar 1 ao mês?

T

Pode somar +1 sem problemas. Se você tiver alguma dúvida, veja os valores de Calendar.JANUARY até Calendar.DECEMBER.

ViniGodoy

Ou pare de sofrer com calendar e use uma API decente para isso.

W

Obrigado pela ajuda.

Irei pesquisar, mas, de forma resumida, qual a vantagem da Joda Time - Java date and time API?

Criado 29 de abril de 2009
Ultima resposta 29 de abr. de 2009
Respostas 6
Participantes 4