def generate_date_from_string(date_str): """ Expects a string with format YYYY-MM-DD. returns datetime.date """ try: return datetime.date(*[int(x) for x in date_str.split('-')]) except Exception as e: logger.error(str(e)) return None
def generate_all_fiscal_years_in_range(start, end): """ For a given date-range, provide the inclusive fiscal years """ fiscal_years = [] temp_date = start while temp_date < end: fiscal_years.append(generate_fiscal_year(temp_date)) temp_date = datetime.date(temp_date.year + 1, temp_date.month, temp_date.day) return fiscal_years
def generate_date_ranges_in_time_period(start, end, range_type='fy'): """ For a given date-range, provide the inclusive fiscal years, fiscal quarters, or fiscal months """ date_ranges = [] temp_date = start while temp_date < end: fy, quarter = generate_fiscal_year_and_quarter(temp_date).split('-Q') date_range = {'fy': int(fy)} date_interval = relativedelta(years=1) if range_type == 'quarter': date_range['quarter'] = int(quarter) date_interval = relativedelta(months=3) elif range_type == 'month': date_range['month'] = generate_fiscal_month(temp_date) date_interval = relativedelta(months=1) temp_date = datetime.date(temp_date.year, temp_date.month, temp_date.day) + date_interval date_ranges.append(date_range) return date_ranges