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?
O primeiro dia do mês, obviamente, é sempre 1.
Portanto, precisas apenas do último dia.
[code]Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
int lastDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(lastDay);[/code]
Se não era isso ou precisa de mais coisa, tenta explicar com calma, não entendi inteiramente sua necessidade (dúvida).
Abraços.
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é?
o [quote]nel[/quote] 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();
}
[quote=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é?[/quote]
Então é só executar o código que lhe passei ou o do avsouza.
É questão de análise e adaptar as tuas necessidades.
Aí vai mais uma sugestão:
[code] 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));[/code][quote][b]Saída:[/b]
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[/quote]
Abraço!
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.