2012-07-10 15 views
6

Hola soy nuevo en Android. Cómo obtener todas las fechas entre dos fechas en Android.genarate fechas entre dos fecha en android

Por ejemplo. Tengo dos cadenas.
String first="2012-07-15";
String second="2012-07-21";

convierto y ver las fechas de este cuerdas.

DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat df2 = new SimpleDateFormat("MMM dd");
String mydate = df2.format(df1 .parse(first));

De esta manera me sale ambas fechas de primera y segunda cadena.

Ahora también muestro todas las fechas entre estas dos fechas. ¿Alguien puede ayudarme a encontrar esto?

+3

posible duplicado de [¿Cómo puedo incrementar una fecha en un día en Java?] (http://stackoverflow.com/questions/428918/how-can-i-increment-a-date-by-one-day-in-java) - Puede ejecutar el incremento en un bucle para crear la serie de fecha. – assylias

Respuesta

24

es mejor no utilizar ningún valor codificado en los cálculos de fecha. podemos confiar en los métodos de la clase java Calendar para realizar esta tarea

ver el código

private static List<Date> getDates(String dateString1, String dateString2) 
{ 
    ArrayList<Date> dates = new ArrayList<Date>(); 
    DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd"); 

    Date date1 = null; 
    Date date2 = null; 

    try { 
     date1 = df1 .parse(dateString1); 
     date2 = df1 .parse(dateString2); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

    Calendar cal1 = Calendar.getInstance(); 
    cal1.setTime(date1); 


    Calendar cal2 = Calendar.getInstance(); 
    cal2.setTime(date2); 

    while(!cal1.after(cal2)) 
    { 
     dates.add(cal1.getTime()); 
     cal1.add(Calendar.DATE, 1); 
    } 
    return dates; 
} 

y utilizarlo como continuación

List<Date> dates = getDates("2012-02-01", "2012-03-01"); 
    for(Date date:dates) 
     System.out.println(date); 
+0

Muchas gracias, amigo, está funcionando. –

+0

feliz de poder ayudarte – sunil

1
public class DummyWorks extends Activity 
{ 
static final long ONE_DAY = 24 * 60 * 60 * 1000L; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    getDatesBetween("03/23/2011","03/28/2011"); 
} 

public static void getDatesBetween(String startDate,String endDate) { 


    long from=Date.parse(startDate); 

    long to=Date.parse(endDate); 

    int x=0; 

    while(from <= to) { 
      x=x+1; 
      System.out.println ("Dates : "+new Date(from)); 
      from += ONE_DAY; 
    } 
    System.out.println ("No of Dates :"+ x); 


} 
} 
+0

Agregar milisegundos a su fecha conlleva un alto riesgo de error debido a los ahorros de luz diurna y otros cambios de la zona horaria. – assylias

+0

gracias @assylias, ahora lo probé. Obteniendo el resultado correcto después de cambiar "long ONE_DAY" –

+0

hola @Ramkiran gracias por su respuesta. Pero recibí un error en 'long from = Date.parse (startDate);' que dice que java.illegalArgumentException en java.util.Date.parse. –

Cuestiones relacionadas