bi_dosv_inventory_c2db/utils/date_utl.py
Marvin Vallecillo bd0eef8998 primer commit
2024-04-11 02:24:26 -06:00

45 lines
1.6 KiB
Python

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