Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/03/2014, 08:39
Avatar de farfamorA
farfamorA
 
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 5 meses
Puntos: 24
Respuesta: como obtener fechas entre un intervalo dado

No necesitas que sea un String para separar así la fecha. Puedes usar la clase SimpleDateFormat para dar formato a las fechas. Prueba este ejemplo:
Código Java:
Ver original
  1. public class Ejemplo {
  2.  
  3.     public static void main(String args[]) {
  4.         // Instanciamos la clase Ejemplo
  5.         Ejemplo ejm = new Ejemplo();
  6.        
  7.         // Creamos las fechas utilizando la clase Calendar (recomendado)
  8.         Calendar c1 = Calendar.getInstance();
  9.         c1.set(2014, 02, 01); // Recuerda, en Java los meses empiezan desde 0
  10.                               // por lo tanto el mes 02 equivale a Marzo.
  11.         Calendar c2 = Calendar.getInstance();
  12.         c2.set(2014, 02, 18);
  13.        
  14.         // Obtenemos la lista de fechas utilizando el método que está líneas más abajo
  15.         java.util.List<Date> listaEntreFechas = ejm.getListaEntreFechas(c1.getTime(), c2.getTime());
  16.        
  17.         // Creamos el SimpleDateFormat con nuestro patrón deseado E yyyy-MM-dd
  18.         SimpleDateFormat sdf = new SimpleDateFormat("E yyyy-MM-dd");
  19.        
  20.         // Recorremos la lista
  21.         for (Date date : listaEntreFechas) {
  22.             // Imprimimos en consola la fecha formateada
  23.             System.out.println(sdf.format(date));
  24.         }
  25.     }
  26.    
  27.     /**
  28.      * Método para obtener una lista con fechas en el intervalo indicado
  29.      * @param fechaInicio Fecha inicial del intervalo
  30.      * @param fechaFin Fecha final del intervalo
  31.      * @return Fecha final
  32.      */
  33.     public java.util.List<Date> getListaEntreFechas(Date fechaInicio, Date fechaFin) {
  34.         // Convertimos la fecha a Calendar, mucho más cómodo para realizar
  35.         // operaciones a las fechas
  36.         Calendar c1 = Calendar.getInstance();
  37.         c1.setTime(fechaInicio);
  38.         Calendar c2 = Calendar.getInstance();
  39.         c2.setTime(fechaFin);
  40.        
  41.         // Lista donde se irán almacenando las fechas
  42.         java.util.List<Date> listaFechas = new java.util.ArrayList<Date>();
  43.        
  44.         // Bucle para recorrer el intervalo, en cada paso se le suma un día.
  45.         while (!c1.after(c2)) {
  46.             listaFechas.add(c1.getTime());
  47.             c1.add(Calendar.DAY_OF_MONTH, 1);
  48.         }
  49.         return listaFechas;
  50.     }
  51.  
  52. }
Verás que la salida es justo lo que deseas:
Código:
sáb 2014-03-01
dom 2014-03-02
lun 2014-03-03
mar 2014-03-04
mié 2014-03-05
jue 2014-03-06
vie 2014-03-07
sáb 2014-03-08
dom 2014-03-09
lun 2014-03-10
mar 2014-03-11
mié 2014-03-12
jue 2014-03-13
vie 2014-03-14
sáb 2014-03-15
dom 2014-03-16
lun 2014-03-17
mar 2014-03-18
Y así evitas nuevamente la concatenación de Strings.

Te recomiendo este enlace:
http://chuwiki.chuidiang.org/index.p...mpleDateFormat
En la documentación oficial puedes ver las letras patrones (d, y, M, E) que se utilizan en Java para formatear fechas:
http://docs.oracle.com/javase/6/docs...ateFormat.html

Saludos.