Obtener la fecha laboral anterior más reciente en Python

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].

ValorDía
0Lunes
1Martes
2Miércoles
3Jueves
4Viernes
5Sábado
6Domingo
Valores retornados por el método weekday

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 un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.