from datetime import date, datetime, timedelta """ This class recive two parameters, but only return a list of range of date for example: Entry: start-date 2024-03-01 00:00:00 end-date 2024-03-03 00:00:00 Result: [datetime.datetime(2024, 3, 1, 0, 0), datetime.datetime(2024, 3, 2, 0, 0), datetime.datetime(2024, 3, 3, 0, 0)] if don't entry start-date and end-date default date will be today-1 """ class EntryDateError(Exception): def __init__(self, msj, code): super().__init__(msj) self.code = code class DateUtil: def __init__(self, start_date, end_date, return_type='datetime'): self.default_Date = datetime.combine((date.today() - timedelta(days=1)), datetime.min.time()) self.start_date = start_date if start_date else self.default_Date self.end_date = self.end_date = end_date if end_date else (start_date if start_date else self.default_Date) self.return_type = return_type def date_eval(self): if self.start_date and self.end_date: if self.end_date < self.start_date: raise EntryDateError(f'end-date {self.end_date} can not be less than start-date {self.start_date}', 10001) def date_range(self): lista_de_fechas = [] current_date = self.start_date self.date_eval() while current_date <= self.end_date: lista_de_fechas.append( current_date.date() if self.return_type == 'date' else current_date ) current_date += timedelta(days=1) return lista_de_fechas