Estranho… to setando um mês e ele me imprime outro:
Calendar cal = new GregorianCalendar();
cal.set( Calendar.MONTH , 1 );
System.out.println( cal.get( Calendar.MONTH ) );
Façam o teste, ele imprime 2… alguém sabe o que é?
vlw
Estranho… to setando um mês e ele me imprime outro:
Calendar cal = new GregorianCalendar();
cal.set( Calendar.MONTH , 1 );
System.out.println( cal.get( Calendar.MONTH ) );
Façam o teste, ele imprime 2… alguém sabe o que é?
vlw
olhe o javadoc !
Legal… eu já olhei antes de postar o tópico… se tiver alguma dica pra me dar…
vlw
Dessa forma ele tbém imprime 2
Calendar cal = new GregorianCalendar();
cal.set( Calendar.MONTH , Calendar.FEBRUARY );
System.out.println( cal.get( Calendar.MONTH ) );
Ele não está imprimindo errado, o problema é que ele está “lenient”, o que quer dizer que ele vai aceitar os valores errados que você está passando e vai “somar” as datas.
Mas qual o valor errado que você está passando?
Você está criando um GregorianCalendar com a data atual, 30/04/2006, e está tentando atribuir ele ao mês de fevereiro, mas em fevereiro não existe dia 30, então ele simplesmente soma os dias de fevereiro que sobram e passa pra março (que é o mês “2” pro Calendar).
Se você tivesse colocado a propriedade “lenient” como false, o objeto teria lançado uma exceção avisando que o valor passado estava incorreto (porque fevereiro não tem dia 30).
Nesse exemplo as coisas funcionam como você esperava que funcionassem:
Calendar cal = new GregorianCalendar();
cal.setLenient(false);
cal.set( Calendar.MONTH , Calendar.APRIL);
System.out.println( Calendar.APRIL== cal.get( Calendar.MONTH ) );
Como o Fabrício disse, é só ler o JavaDoc 
Você não leu o javadoc !
Depois dê uma pesquisada também no aqui no GUJ
Ele não está imprimindo errado, o problema é que ele está “lenient”, o que quer dizer que ele vai aceitar os valores errados que você está passando e vai “somar” as datas.Mas qual o valor errado que você está passando?
Você está criando um GregorianCalendar com a data atual, 30/04/2006, e está tentando atribuir ele ao mês de fevereiro, mas em fevereiro não existe dia 30, então ele simplesmente soma os dias de fevereiro que sobram e passa pra março (que é o mês “2” pro Calendar).
Se você tivesse colocado a propriedade “lenient” como false, o objeto teria lançado uma exceção avisando que o valor passado estava incorreto (porque fevereiro não tem dia 30).
Nesse exemplo as coisas funcionam como você esperava que funcionassem:
Calendar cal = new GregorianCalendar(); cal.setLenient(false); cal.set( Calendar.MONTH , Calendar.APRIL); System.out.println( Calendar.APRIL== cal.get( Calendar.MONTH ) );Como o Fabrício disse, é só ler o JavaDoc
![]()
Obrigado…