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+