(start_date, end_date, interval_level='year')
| 10 | from datetime import datetime, timedelta |
| 11 | |
| 12 | def generate_intervals(start_date, end_date, interval_level='year'): |
| 13 | |
| 14 | intervals = [] |
| 15 | |
| 16 | if interval_level == 'year': |
| 17 | current_date = start_date |
| 18 | while current_date < end_date: |
| 19 | next_year = current_date.replace(year=current_date.year + 1) |
| 20 | if next_year > end_date: |
| 21 | next_year = end_date |
| 22 | interval = (current_date, next_year) |
| 23 | intervals.append(interval) |
| 24 | current_date = next_year |
| 25 | elif interval_level == 'day': |
| 26 | current_date = start_date |
| 27 | while current_date < end_date: |
| 28 | next_day = current_date + timedelta(days=1) |
| 29 | interval = (current_date, next_day) |
| 30 | intervals.append(interval) |
| 31 | current_date = next_day |
| 32 | elif interval_level == 'month': |
| 33 | current_date = start_date |
| 34 | |
| 35 | while current_date < end_date: |
| 36 | year, month = current_date.year, current_date.month |
| 37 | if month == 12: |
| 38 | next_month = datetime(year + 1, 1, 1) |
| 39 | else: |
| 40 | next_month = datetime(year, month + 1, 1) |
| 41 | if next_month > end_date: |
| 42 | next_month = end_date |
| 43 | interval = (current_date, next_month) |
| 44 | intervals.append(interval) |
| 45 | current_date = next_month |
| 46 | else: |
| 47 | return None |
| 48 | |
| 49 | return intervals |
| 50 | |
| 51 | def generate_dates(start_date, end_date, interval_level='year'): |
| 52 |
no outgoing calls
no test coverage detected