Python: obtenga el día hábil anterior más reciente

Dada una fecha, la tarea es escribir un programa Python para obtener el día hábil anterior más reciente a partir de la fecha dada.

Ejemplo:

Entrada: fecha_prueba = fecha y hora (2020, 1, 31)

Salida : 2020-01-30 00:00:00

Explicación: 31 de enero de 2020, siendo viernes, el último día hábil es el jueves, es decir, 30 de enero.

Entrada: prueba_fecha = fecha y hora (2020, 2, 3)

Salida : 2020-01-31 00:00:00

Explicación: 3 de febrero de 2020, siendo lunes, el último día hábil es el viernes, es decir, 31 de enero.

Método 1: Usando timedelta() + día de la semana()

En este, realizamos la tarea de restar 3 en el caso del lunes, 2 en el caso del domingo y 1 en el resto de días. timedelta() realiza la tarea de restar, y las sentencias condicionales verifican un día de la semana.

Python3

# Python3 code to demonstrate working of
# Last business day
# using timedelta() + conditional statements + weekday()
from datetime import datetime, timedelta
  
# initializing dates
test_date = datetime(2020, 1, 31)
               
# printing original date
print("The original date is : " + str(test_date))
  
# getting difference
diff = 1
if test_date.weekday() == 0:
    diff = 3
elif test_date.weekday() == 6:
    diff = 2
else :
    diff = 1
      
# subtracting diff 
res = test_date - timedelta(days=diff)
  
# printing result
print("Last business day : " + str(res))

Producción:

The original date is : 2020-01-31 00:00:00
Last business day : 2020-01-30 00:00:00

Método 2: Usando max() + % operador + timedelta() 

Realice tareas de manera similar, siendo la única diferencia el método para calcular los cambios de diferencia para obtener el operador max() y %. 

Python3

# Python3 code to demonstrate working of
# Last business day
# using max() + % operator + timedelta() 
from datetime import datetime, timedelta
  
# initializing dates
test_date = datetime(2020, 1, 31)
               
# printing original date
print("The original date is : " + str(test_date))
  
# getting difference
# using max() to get differences 
diff = max(1, (test_date.weekday() + 6) % 7 - 3)
      
# subtracting diff 
res = test_date - timedelta(days=diff)
  
# printing result
print("Last business day : " + str(res))

Producción:

The original date is : 2020-01-31 00:00:00
Last business day : 2020-01-30 00:00:00

Método 3: Usar pd.tseries.offsets.BusinessDay(n) 

En esto, creamos una compensación de día hábil de 1 día y restamos de la fecha de inicialización. Esto devuelve el día hábil anterior como se desee.

Python3

# Python3 code to demonstrate working of
# Last business day
# using pd.tseries.offsets.BusinessDay(n)
import pandas as pd
from datetime import datetime
  
# initializing dates
test_date = datetime(2020, 2, 3)
  
# printing original date
print("The original date is : " + str(test_date))
  
# Creating Timestamp
ts = pd.Timestamp(str(test_date))
  
# Create an offset of 1 Business days
offset = pd.tseries.offsets.BusinessDay(n=1)
  
# getting result by subtracting offset
res = test_date - offset
  
# printing result
print("Last business day : " + str(res))

Producción : 

The original date is : 2020-02-03 00:00:00
Last business day : 2020-01-31 00:00:00

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *