publicCalendarformatDate(Stringdate){// Pegando a data //Quebrando a data para buscar ano , mes e anoString[]aData=date.split("/");// Setando no objeto Calendar o mes , dia e anoCalendarcal=Calendar.getInstance();cal.set(Calendar.DAY_OF_MONTH,Integer.parseInt(aData[0]));cal.set(Calendar.MONTH,Integer.parseInt(aData[1]));cal.set(Calendar.YEAR,Integer.parseInt(aData[2]));returncal;}
Porque os meses em Calendar vão de 0 a 11 e quando você setou 12 ele se confundiu. Tente colocar:
cal.set(Calendar.MONTH , Integer.parseInt(aData[1]) - 1);
De qualquer maneira, dê uma olhada no SimpleDateFormat que ele já faz isso que você quer.
adriano.silva
Olha q eu fiz para teste!
String data = "10/12/2006";
System.out.println(this.formatDate(data));
System.out.println(this.formatDate(data).MONTH);
Ele está gravando certo, o q está errado?
Sami_Koivu
Olá,
Como disse o David na classe Calendar os meses vão de 0 a 11.
Ou seja 0 é Janeiro, etc.
Por exemplo, se você fizer um:
System.out.println(newGregorianCalendar());
aqui imprime:
MONTH=10
O método toString da classe Calendar imprime os valores dos campos internos da classe. Ele imprime aquele 12 que você setou, mas o valor correto para Dezembro seria 11.
[]s,
Sami
s4nchez
Além disso, para obter o mês do objeto Calendar você deveria usar
objetoCalendar.get(Calendar.MONTH);
e não
objetoCalendar.MONTH
Ou seja, não só o seu código tava com problema, mas o teste também não tava correto
Sami_Koivu
Opa, nem tinha notado isso. O problema mais grave é esse citado pela colega.
Calendar.MONTH é um constante, utilizado para referir ao campo mes da classe Calendar.