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:
Calendarc=newGregorianCalendar(2013,0,30);// 0 = Janeiro// Depois vc adiciona mais um mês com o código:c.add(Calendar.MONTH,1);
E
entanglement
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:
intmes=08;
Ou um erro de execução com o seguinte código:
intmes=011;...cal.set(Calendar.MONTH,mes);// 011 em octal é o valor 9 em decimal, que representa o mês de outubro :(
RafaelCassau
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]