Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/10/2008, 08:47
xayide
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Para pensar, a no ser que alguien me de una solucion!

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