How to create a list of dates between a start and end date in Python

4 Answers

0 votes
from datetime import date, timedelta

def generate_dates(start: date, end: date):
    """Return a list of dates from start to end (inclusive)."""
    dates = []

    if start > end:
        return dates  # empty list

    d = start
    while d <= end:
        dates.append(d)
        d += timedelta(days=1)

    return dates


def main():
    start = date(2026, 1, 3)
    end   = date(2026, 1, 12)

    dates = generate_dates(start, end)

    print(f"Generated {len(dates)} dates:")
    for d in dates:
        print(d.strftime("%Y-%m-%d"))


if __name__ == "__main__":
    main()




'''
run:

Generated 10 dates:
2026-01-03
2026-01-04
2026-01-05
2026-01-06
2026-01-07
2026-01-08
2026-01-09
2026-01-10
2026-01-11
2026-01-12

'''

 



answered Jan 31 by avibootz
0 votes
from datetime import date, timedelta

def date_range(start: date, end: date):
    """Yield dates from start to end inclusive."""
    current = start
    while current <= end:
        yield current
        current += timedelta(days=1)

def main():
    start = date(2026, 1, 3)
    end   = date(2026, 1, 12)

    dates = list(date_range(start, end))

    print(f"Generated {len(dates)} dates:")
    for d in dates:
        print(d.strftime("%Y-%m-%d"))

if __name__ == "__main__":
    main()




'''
run:

Generated 10 dates:
2026-01-03
2026-01-04
2026-01-05
2026-01-06
2026-01-07
2026-01-08
2026-01-09
2026-01-10
2026-01-11
2026-01-12

'''

 



answered Jan 31 by avibootz
0 votes
from datetime import date, timedelta

start = date(2026, 1, 3)
end   = date(2026, 1, 12)

dates = [
    start + timedelta(days=i)
    for i in range((end - start).days + 1)
]

print(f"Generated {len(dates)} dates:")
for d in dates:
    print(d.strftime("%Y-%m-%d"))



'''
run:

Generated 10 dates:
2026-01-03
2026-01-04
2026-01-05
2026-01-06
2026-01-07
2026-01-08
2026-01-09
2026-01-10
2026-01-11
2026-01-12

'''

 



answered Jan 31 by avibootz
0 votes
import pandas as pd

dates = pd.date_range("2026-01-03", "2026-01-12")

print(f"Generated {len(dates)} dates:")
for d in dates:
    print(d.date())




'''
run:

Generated 10 dates:
2026-01-03
2026-01-04
2026-01-05
2026-01-06
2026-01-07
2026-01-08
2026-01-09
2026-01-10
2026-01-11
2026-01-12

'''

 



answered Jan 31 by avibootz
...