javadatesimpledateformattimeunit

Generating all days between 2 given dates in Java


I'm trying to get an array of Dates, while my input is a 'from'/'to' structure. So my input is:

String date1 = "2014-01-01";
String date2 = "2014-05-01";

My output should be an Arraylist with all dates between date1 and date2. I've already looked for this, but I could only find questions about the difference between 2 dates:

SimpleDateFormat myFormat = new SimpleDateFormat("dd MM yyyy");
String inputString1 = "23 01 1997";
String inputString2 = "27 04 1997";

try {
    Date date1 = myFormat.parse(inputString1);
    Date date2 = myFormat.parse(inputString2);
    long diff = date2.getTime() - date1.getTime();
    System.out.println ("Days: " + TimeUnit.DAYS.convert(diff,TimeUnit.MILLISECONDS));
} catch (ParseException e) {
e.printStackTrace();
}

Any hints or suggestions? All other questions are for iOS or SQL.


Solution

  • Take a look at JodaTime: http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html

    DateTime dateTime1 = new DateTime(date1);
    DateTime dateTime2 = new DateTime(date2);
    
    List<Date> allDates = new ArrayList();
    
    while( dateTime1.before(dateTime2) ){
       allDates.add( dateTime1.toDate() );
       dateTime1 = dateTime1.plusDays(1);
    }