Pessoal, se alguém puder me auxiliar.
Estou tentando fazer um processo aqui que é o seguinte.
O usuario entra com um determinado periodo de data.
Por exemplo: 01/01/2010 a 03/03/2010
Dentro deste intervalo preciso separar os intervalos de datas por meses, Exemplo.
1 - Periodo: 01/01/2010 a 31/01/2010
2 - Periodo: 01/02/2010 a 28/02//2010
3 - Periodo: 01/03/2010 a 03/03/2010
Um outro exemplo. Considerando o seguinte periodo inserido pelo usuario. 16/01/2010 a 21/03/2010
1 - Periodo: 16/01/2010 a 31/01/2010
2 - Periodo: 01/02/2010 a 28/02//2010
3 - Periodo: 01/03/2010 a 21/03/2010
E assim por diante, depende do periodo inserido pelo usuario. Considerando os dias bissexto tbm.
Alguém consegue me ajudar?
Obrigado…
Leia a documentação e veja como o month funciona, após entender isso é só criar uma lógica bem simples.
V
Valmir_Ferreira
Pessoal, consegui. Portanto estou postando o codigo como contribuição para quem um dia precisar e ter a mesma dificuldade.
public static void main(String[] args) throws ParseException {
StringsdateInicio="10/01/2010";StringsdateFim="02/03/2011";SimpleDateFormatf=newSimpleDateFormat("dd/MM/yyyy");DatedateInicial=f.parse(sdateInicio);DatedateFinal=f.parse(sdateFim);intmonths=monthsBetweenDates(dateInicial,dateFinal);System.out.println(months);for(inti=0;i<months;i++){Calendarcalendar=Calendar.getInstance();calendar.setTime(dateInicial);calendar.add(Calendar.MONTH,i);if(i!=0){calendar.set(Calendar.DAY_OF_MONTH,1);}DatedataInicialPeriodo=calendar.getTime();if(i!=months-1){calendar.set(Calendar.DATE,calendar.getActualMaximum(Calendar.DATE));}else{Calendarx=Calendar.getInstance();x.setTime(dateFinal);calendar.set(Calendar.DATE,calendar.getActualMaximum(Calendar.DATE));calendar.set(Calendar.DAY_OF_MONTH,x.get(Calendar.DAY_OF_MONTH));}DatedataFinalPeriodo=calendar.getTime();System.out.println("Data Inicial "+f.format(dataInicialPeriodo)+" - Data Final "+f.format(dataFinalPeriodo));}}publicstaticintmonthsBetweenDates(DatestartDate,DateendDate){Calendarstart=Calendar.getInstance();start.setTime(startDate);Calendarend=Calendar.getInstance();end.setTime(endDate);intmonthsBetween=0;intdateDiff=end.get(Calendar.DAY_OF_MONTH)-start.get(Calendar.DAY_OF_MONTH);if(dateDiff<0){intborrrow=end.getActualMaximum(Calendar.DAY_OF_MONTH);dateDiff=(end.get(Calendar.DAY_OF_MONTH)+borrrow)-start.get(Calendar.DAY_OF_MONTH);monthsBetween--;if(dateDiff>0){monthsBetween++;}}else{monthsBetween++;}monthsBetween+=end.get(Calendar.MONTH)-start.get(Calendar.MONTH);monthsBetween+=(end.get(Calendar.YEAR)-start.get(Calendar.YEAR))*12;returnmonthsBetween;}}