(resolvido) Duvida com Calendar

bom dia a todos…
eu quero adicionar um mes a uma data
e peguei a data : 30/01/2013
e tentei adicionar um mes
porem ele me traz a data 02/03/2013
o que eu estou fazendo de errado;

eu queria que ele me retornasse 28/02/2013

Calendar c = new GregorianCalendar(2013,01,30); c.add(Calendar.MONTH, 0); SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyy"); System.out.println(sdf.format(c.getTime()));

Os meses em Calendar() iniciam por 0, se quer a data de 30 de Janeiro de 2013 deve colocar:

Calendar c = new GregorianCalendar(2013,0,30); // 0 = Janeiro
// Depois vc adiciona mais um mês com o código:
c.add(Calendar.MONTH, 1);

O correto não é usar “01” e sim “Calendar.JANUARY” (que é zero, por sinal).

Não se esqueça que não é bom botar zeros à esquerda indiscriminadamente em constantes, porque constantes numéricas em Java que começam com zero estão em octal, não em decimal. Portanto, você pode ter um erro de compilação bobo com o seguinte código:

int mes  = 08;

Ou um erro de execução com o seguinte código:

int mes  = 011;
...
cal.set (Calendar.MONTH, mes); // 011 em octal é o valor 9 em decimal, que representa o mês de outubro :(

como é uma adicão de um mes acho q não fica visualmente coerente usar uma constante Calendar.JANUARY, por mais que ela represente zero, nesse caso para não ter numeros magicos crie suas próprias constantes, e caso sua duvida tenha sido sanada por favor altere o titulo do topico para [RESOLVIDO]

t+