Iterating through a range of dates in Python
- by ShawnMilo
This is working fine, but I'm looking for any feedback on how to do it better. Right now I think it's better than nested loops, but it starts to get Perl-one-linerish when you have a generator in a list comprehension. Any suggestions are welcome.
day_count = (end_date - start_date).days + 1
for single_date in [d for d in (start_date + timedelta(n) for n in range(day_count)) if d <= end_date]:
print strftime("%Y-%m-%d", single_date.timetuple())
Notes:
I'm not actually using this to print; that's just for demo purposes.
The variables start_date and end_date are datetime.date objects, because I don't need the timestamps (they're going to be used to generate a report).
I checked the StackOverflow questions which were similar before posting this, but none were exactly the same.
Sample Output (for a start date of 2009-05-30 and an end date of 2009-06-09):
2009-05-30
2009-05-31
2009-06-01
2009-06-02
2009-06-03
2009-06-04
2009-06-05
2009-06-06
2009-06-07
2009-06-08
2009-06-09