Fala galera.
Estou passando por um problema no Calendar, que acredito ocorrer por causa do horário de verão.
Estou forçando a utilização do Fuso “GMT-3”, afim de evitar o horário de verão e trabalhar com todos os dias possuindo 24 horas.
Porém, ao setar o TimeZone a mão, algumas funções do calendar não estão retornando os valores corretos.
Exemplo em que busco o dia total no mês de fevereiro de 2012:
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/yyyy");
TimeZone timeZone = TimeZone.getTimeZone("GMT-3");
Calendar calendar = Calendar.getInstance(timeZone);
calendar.setTime(dateFormat.parse("02/2012"));
System.out.println(calendar.getTime());
System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Saídas:
Wed Feb 01 00:00:00 BRST 2012
31
O getActualMaximum(Calendar.DAY_OF_MONTH) não está retornando o valor 29, que é o total de dias em fevereiro de 2012, está retornando 31, que acredito ter buscado o máximo do mês anterior (janeiro).
Já pesquisei em vários fóruns, sem sucesso.
Alguém sabe me dizer porque isso ocorre? Qual a solução?
Abraços.