[RESOLVIDO][Duvida] Primeiro e ultimo dia do mês anterior

6 respostas
M

Estamos fazendo uma rotina batch, e preciso fazer ums string, que quando a rotina for executada, ela busque os dados ja determinados na rotina, ela puxe os mesmos do primeiro ao ultimo dia do mês anterior…
Preciso saber como faço a string, que pegue o primeiro, e ultimo dia do mês anterior ao da data de execução da rotina, alguem tem uma sugestão?

6 Respostas

nel

O primeiro dia do mês, obviamente, é sempre 1.
Portanto, precisas apenas do último dia.

Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
		
int lastDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(lastDay);

Se não era isso ou precisa de mais coisa, tenta explicar com calma, não entendi inteiramente sua necessidade (dúvida).
Abraços.

M

Então, eu expliquei mau mesmo, mas é como se fosse um programa que gera digamos, um relatorio.
Se eu executar ele hoje 18/01/2012, ele vai me dar todos os dados do dia 01/12/2011 até o dia 31/12/2011.
sempre baseado na data atual, como se eu executasse ele dia 8/03/2012, me daria os dados de 1º a 29 de Fevereiro de 2012…
acho que agora deu ficou melhor né?

xandevieira

o

nel
ja respondeu sua pergunta.
Segue complemento.

public static Date getPrimeiroDiaDoMesAnterior(Date date) {
		GregorianCalendar gc = getDateCalendar(date);
		gc.add(Calendar.MONTH, -1);
		gc.set(Calendar.DAY_OF_MONTH, 1);
		return gc.getTime();
	}

	public static Date getUltimoDiaDoMesAnterior(Date date) {
		GregorianCalendar gc = getDateCalendar(date);
		gc.add(Calendar.MONTH, -1);
		gc.set(Calendar.DAY_OF_MONTH, gc.getActualMaximum(Calendar.DAY_OF_MONTH));
		return gc.getTime();
	}
nel

Marcus-Pereira:
Então, eu expliquei mau mesmo, mas é como se fosse um programa que gera digamos, um relatorio.
Se eu executar ele hoje 18/01/2012, ele vai me dar todos os dados do dia 01/12/2011 até o dia 31/12/2011.
sempre baseado na data atual, como se eu executasse ele dia 8/03/2012, me daria os dados de 1º a 29 de Fevereiro de 2012…
acho que agora deu ficou melhor né?

Então é só executar o código que lhe passei ou o do avsouza.
É questão de análise e adaptar as tuas necessidades.

Vingdel
Aí vai mais uma sugestão:
Calendar c = Calendar.getInstance();
		Date d = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

		d = c.getTime();
		System.out.println("Data de hoje: " + sdf.format(d));

		c.add(Calendar.MONTH, -1);
		d = c.getTime();
		System.out.println("Data do mes passado: " + sdf.format(d));

		c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
		d = c.getTime();
		System.out.println("Data do primeiro dia do mes passado: " + sdf.format(d));

		c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
		d = c.getTime();
		System.out.println("Data do ultimo dia do mes passado: " + sdf.format(d));
Saída: Data de hoje: 18/01/2012 Data do mes passado: 18/12/2011 Data do primeiro dia do mes passado: 01/12/2011 Data do ultimo dia do mes passado: 31/12/2011

Abraço!

M

Queria agradecer a vocês, Fiz as Adaptações já, ta tudo certinho… Muito obrigado mesmo, nel, avsouza e vingdel. muito obrigado pela ajuda, Vlw mesmo.

Criado 18 de janeiro de 2012
Ultima resposta 18 de jan. de 2012
Respostas 6
Participantes 4