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+