def get_dates_from_timegrain(from_date, to_date, timegrain="Daily"): from_date = getdate(from_date) to_date = getdate(to_date) days = months = years = 0 if "Daily" == timegrain: days = 1 elif "Weekly" == timegrain: days = 7 elif "Monthly" == timegrain: months = 1 elif "Quarterly" == timegrain: months = 3 if "Weekly" == timegrain: dates = [get_last_day_of_week(from_date)] else: dates = [get_period_ending(from_date, timegrain)] while getdate(dates[-1]) < getdate(to_date): if "Weekly" == timegrain: date = get_last_day_of_week( add_to_date(dates[-1], years=years, months=months, days=days)) else: date = get_period_ending( add_to_date(dates[-1], years=years, months=months, days=days), timegrain) dates.append(date) return dates
def get_period_ending(date, timegrain): date = getdate(date) if timegrain == "Daily": return date else: return getdate({ "Daily": date, "Weekly": get_last_day_of_week(date), "Monthly": get_last_day(date), "Quarterly": get_quarter_ending(date), "Yearly": get_year_ending(date), }[timegrain])
def get_period_ending(date, timegrain): date = getdate(date) if timegrain == 'Daily': return date else: return getdate({ 'Daily': date, 'Weekly': get_last_day_of_week(date), 'Monthly': get_last_day(date), 'Quarterly': get_quarter_ending(date), 'Yearly': get_year_ending(date) }[timegrain])