La fecha laboral anterior más reciente corresponde al día laboral que precede al día actual (laboral), por ejemplo el día laboral que precede al día lunes 2022-06-13 corresponde al día viernes 2022-06-10
Iniciamos a partir de un objeto datetime del módulo datetime que contendrá los datos de la fecha actual. El método estrella en esta ocasión es datetime.weekday(), el cual retornará una representación numérica del día de la semana al que corresponde la fecha en un rango de [0-6].
Valor | Día |
---|---|
0 | Lunes |
1 | Martes |
2 | Miércoles |
3 | Jueves |
4 | Viernes |
5 | Sábado |
6 | Domingo |
Ahora la idea principal consiste en que el día lunes se debe regresar tres días, el domingo dos días y el resto se debe regresar un día.
from datetime import datetime, timedelta
lastBusinessDay = datetime.today()
shift = timedelta(max(1, (lastBusinessDay.weekday() + 6) % 7 - 3))
lastBusinessDay = lastBusinessDay - shift
Con respecto a los asuetos o feriados, por el momento he optado por crear una lista de fechas en donde si el día anterior corresponde a un asueto, vuelvo a generar un día anterior de forma recursiva.
Deja una respuesta