Recuperando o total de dias de cadas mes

4 respostas
P

Estou precisando criar uma projeção de datas que informa o ultimo dia do mes corrente (ex. 31/07/2005 nesse caso), mais os ultimos dias dos proximos 2 meses (no caso agosto e setembro).
Para resolver esse problema estava utilizando o seginte codigo:

GregorianCalendar projecao = new GregorianCalendar(2005, Calendar.JULY, 31);

projecao.add(Calendar.MONTH, 1);

Date d = projecao.getTime();

Nesse caso, se o mes corrente for julho ele me tras corretamente 31/08/2005, mas no caso do mes de setembro ele mes tras 01/10/2005.
Nesse caso, ele está somando a data do dia 31/07/2005 com mais 31 dias e por isso não estou conseguindo o resultado corrento.
Será que teria alguma forma de poder obter o numero de dias de cada mes ??? Nesse caso seria muito mais fácil de se resolver…
Atenciosamente,

Marco Paradiso

4 Respostas

A

É foda mesmo!!!
Monta um metodo onde vc passa o mes e o ano e retona o ultimo dia do mes!
Vc sabe que janeiro,março,maio,julho,agosto,outubro e dezembro tem 31!!!
Os outros exeto fevereiro tem 30!
Ai vc faz uma conta pra ver se o ano é bissesto e calcula o de fevereiro!
Depois que vc fizer o codigo, posta ele aê!!!
hahah

P

consegui resolver… é um pouco estranho mas blz…

while(i++ < 12) {
            GregorianCalendar datas = new GregorianCalendar(c.get(Calendar.YEAR), c.get(Calendar.MONTH), 1);
            datas.add(Calendar.MONTH, i);
            datas.add(Calendar.DATE, -1);
            
            Date d = datas.getTime();
            DateFormat formato = DateFormat.getDateInstance();
            System.out.println("projecao: " + formato.format(d));
        }
        System.out.println("mes atual: " + c.get(Calendar.MONTH));
        System.out.println("ano atual: " + c.get(Calendar.YEAR));

nesse caso ele vai listar os ultimos dias referentes a 12 mese apartir de julho/2005 à junho/2006 …
O q eu achei estranho é q ele inicia como o primeiro dia do mes e subtrai um dia. depois no loop ele incrementa o o numero de meses q vc deseja obter o resultado…

[size=“11”]
[color=“red”]

  • Editado: Lembre-se de usar BBCode em seus códigos para mantê-los identados e mais legíveis para outros usuários - Matheus[/color][/size] :joia:
F

da uma olhada neste codigo…

Calendar c = Calendar.getInstance();
	
	int max;
	for(int i=0; i < 12; i++) {
		max = c.getActualMaximum(Calendar.DAY_OF_MONTH);
		System.out.println(max + "/" + (c.get(Calendar.MONTH) + 1) + "/" + c.get(Calendar.YEAR));
		c.add(Calendar.MONTH, 1);
	}
P

Tb é uma otima alternativa… vou dar uma olhada…

Criado 27 de julho de 2005
Ultima resposta 27 de jul. de 2005
Respostas 4
Participantes 3