from datetime import datetime, timedelta from collections import Counter def date_range(start, end): if isinstance(start, datetime): start = start.date() if isinstance(end, datetime): end = end.date() delta = end - start for d in range(delta.days + 1): yield start + timedelta(days=d) return def weekday_in_date_range(start, end, weekday): counter = Counter([d.isoweekday() for d in date_range(start, end)]) return counter.get(weekday, 0)