Tim
Tim

Reputation: 13258

Java: Iteration of given Dates

I have two dates in Java:

Wed Jan 05 00:00:00 CET 2011
Sat Jan 15 23:59:59 CET 2011

Now I want to iterate over them, so that every day I can do a System.out.println() in which I put the date in this kind on the console:

2011-01-05
2011-01-06
2011-01-07
...
2011-01-13
2011-01-14
2011-01-15

How can I do this?

Best Regards, Tim.

Update:

Calendar calend = Calendar.getInstance();
calend.setTime(myObject.getBeginDate());
Calendar beginCalendar = new GregorianCalendar(calend.get(Calendar.YEAR), calend.get(Calendar.MONTH), calend.get(Calendar.DATE));
calend.setTime(myObject.getEndDate());
Calendar endCalendar = new GregorianCalendar(calend.get(Calendar.YEAR), calend.get(Calendar.MONTH), calend.get(Calendar.DATE));
while (beginCalendar.compareTo(endCalendar) <= 0) {
     // ... calculations
    beginCalendar.add(Calendar.DATE, 1);
}

Upvotes: 2

Views: 3773

Answers (2)

Codemwnci
Codemwnci

Reputation: 54884

Use the GregorianCalendar object to increment one day at a time

Output using SimpleDateFormat.

To get your date from a string, into a Date object, you have to do the following

SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Date date = format.parse(yourDateString);

Then, you need to convert into a GregorianCalendar, so that you can easily increment the values and finally output the date using another SimplerDateFormat in the way you want to. See the documentation for the different codes.

Update: Update, following your code update, you can simply do the following

Calendar beginCalendar = Calendar.getInstance();
beginCalendar.setTime(myObject.getBeginDate());
Calendar endCalendar = Calendar.getInstance();
beginCalendar.setTime(myObject.getEndDate());


while (beginCalendar.compareTo(endCalendar) <= 0) {
     // ... calculations
    beginCalendar.add(Calendar.DATE, 1);
}

Upvotes: 3

Qwerky
Qwerky

Reputation: 18435

Create a Calendar object and set it at the start date. Keep adding a day at a time and printing until you're at the end date.

Upvotes: 1

Related Questions