Solo me falta una cosita
al hacer
Calendar fin=cal_fin;
fin.add(Calendar.MONTH,-1);
Luego hago
System.out.println("ultimo periodo:"+cal_fin.getTime());
y a cal_fin se le ha quitado un mes, es decir, que el hacer fin.add(Calendar.MONTH,-1) no sólo se le aplica a fin, si no también a cal_fin.
¿Cómo puede ser eso?
Pongo el código y la salida
Código:
public class c {
public static void main (String[] args){
try {
String fini="22-4-2008";
DateFormat formatter ;
Date date ;
formatter = new SimpleDateFormat("dd-MM-yyyy");
date = formatter.parse(fini);
Calendar cal_ini=Calendar.getInstance();
cal_ini.setTime(date);
System.out.println("fecha inicial:"+cal_ini.getTime());
String ffin="5-12-2008";
DateFormat formatter2 ;
Date date2 ;
formatter2 = new SimpleDateFormat("dd-MM-yyyy");
date2 = formatter2.parse(ffin);
Calendar cal_fin=Calendar.getInstance();
cal_fin.setTime(date2);
System.out.println("fecha final:"+cal_fin.getTime());
//primer periodo
System.out.println("periodo1:"+cal_ini.getTime());
Calendar f=cal_ini;
f.add(Calendar.MONTH,1);
DateFormat form = new SimpleDateFormat("dd-MM-yyyy");
Date d = form.parse("1-"+((f.get(Calendar.MONTH))+1)+"-"+f.get(Calendar.YEAR));
Calendar cal=Calendar.getInstance();
cal.setTime(d);
Calendar fecha=cal;
//hasta cuándo iterar
Calendar fin=cal_fin;
fin.add(Calendar.MONTH,-1);
DateFormat formf = new SimpleDateFormat("dd-MM-yyyy");
Date df = formf.parse("1-"+((fin.get(Calendar.MONTH))+1)+"-"+fin.get(Calendar.YEAR));
Calendar calf=Calendar.getInstance();
calf.setTime(df);
while(fecha.before(calf)){
cal_ini.get(Calendar.MONTH);
fecha.add(Calendar.MONTH, 1);
System.out.println("fecha"+fecha.getTime());
}
System.out.println("ultimo periodo:"+cal_fin.getTime());
} catch (Exception e){
System.out.println("Exception :"+e); }
}
}
salida:
Cita: fecha inicial:Tue Apr 22 00:00:00 CEST 2008
fecha final:Fri Dec 05 00:00:00 CET 2008
periodo1:Tue Apr 22 00:00:00 CEST 2008
fechaSun Jun 01 00:00:00 CEST 2008
fechaTue Jul 01 00:00:00 CEST 2008
fechaFri Aug 01 00:00:00 CEST 2008
fechaMon Sep 01 00:00:00 CEST 2008
fechaWed Oct 01 00:00:00 CEST 2008
fechaSat Nov 01 00:00:00 CET 2008
ultimo periodo:Wed Nov 05 00:00:00 CET 2008
y ya de paso, cómo puedo convertir
Tue Apr 22 00:00:00 CEST 2008
en
22-4-2008
???
gracias