Calendar

Bom dia, estou passando a data 2018, 5, 31 para função DatePart, porém quando eu peço para me retornar o mês ele me retorna como mês “6” e não mês “5” como informado. Estou observando que isso acontece sempre quando passo o ultimo dia do mês.

Calendar Data1 = new GregorianCalendar(2018, 5, 31);
int result = Data.DatePart(Tipo.Dia, Data1);

sendo assim o resultado desse método fica assim:
Dia: 01 - deveria ser 31;
Mês: 06 - Deveria ser 06;
Ano: 2018

public static int DatePart(Tipo tipo, Calendar data)
		throws CadastroException {
	
	
	if (tipo.equals(Tipo.Dia)) {
		return data.get(Calendar.DAY_OF_MONTH);
	}else if (tipo.equals(Tipo.Mes)) {
		return data.get(Calendar.MONTH);
	}else if(tipo.equals(Tipo.Ano))
	{
		return data.get(Calendar.YEAR);
	}else
	{
		return 0;
	}
	
	
}

Bom dia!
Os meses em Java começam em 0, se você quer o mês Maio, deverá passar o valor 4 e não 5

1 curtida

Apenas complementando, a classe Calendar trabalha desta forma

1 curtida

Opa, bem lembrado :+1:
Obrigado