¿Cómo determinar la fecha del viernes pasado usando Python?
En este artículo, aprenderemos cómo determinar la fecha del viernes pasado usando Python.
Métodos utilizados
Los siguientes son los diversos métodos para realizar esta tarea:
Usando el módulo de fecha y hora
Usando el paquete dateutil
Método 1: usar el módulo Datetime
Algoritmo (pasos)
A continuación se detallan el algoritmo/los pasos a seguir para realizar la tarea deseada. −
-
Utilice la palabra clave import para importar datetime, timedelta del módulo datetime.
Cree una variable para almacenar la lista de todos los días de una semana(weekdays).
Cree una función getPreviousByDay() para devolver el último día de la semana del día de entrada aceptando el día de entrada, start_date=None como argumentos
Utilice la declaración if condicional para comprobar si la fecha de inicio es Ninguna.
Asigne la fecha de hoy (fecha actual) a la fecha de inicio.
Obtenga el número del día de la semana actual utilizando la función weekday() (devuelve un número entero correspondiente al día de la semana dado) del módulo de fecha y hora.
Obtenga el índice del día de la semana objetivo (día de entrada dado) utilizando la función index().
Obtenga el número de días de la última semana.
Utilice la instrucción if condicional para comprobar si el resultado de la variable de hace días anterior es igual a 0 y luego asigne 7 a la variable de hace días.
De lo contrario, reste el número de días anterior de la fecha actual (fecha de inicio) para obtener la fecha de la última semana en el día indicado.
-
Devuelve la fecha de la última semana de la fecha de entrada.
Imprima la fecha y hora de hoy/actual usando la función hoy() de fecha y hora.
Imprima la fecha del último viernes llamando a la función getPreviousByDay() definida anteriormente y pasando inputDay como 'Viernes' como argumento.
De la misma manera, imprima la fecha del último lunes y miércoles pasando la fecha de entrada como 'lunes' y 'miércoles' a la función getPreviousByDay() .
Ejemplo
El siguiente programa devuelve Determinar la fecha del último viernes/cualquier día usando el módulo de fecha y hora:
# importing datetime, timedelta from datetime module
from datetime import datetime, timedelta
# list of days in a week
weekdaysList = ['Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday', 'Sunday']
# creating a function to return the last weekday of input day by
# accepting the input day, start_date=None as arguments
def getPreviousByDay(inputDay, start_date=None):
# check whether the start date is None
if start_date is None:
# assiging today's date(current date) to the start date
start_date = datetime.today()
# getting the weekday number
dayNumber = start_date.weekday()
# Get the index of the target weekday
dayNumberTarget = weekdaysList.index(inputDay)
# getting the last weekday
daysAgo = (7 + dayNumber - dayNumberTarget) % 7
# checking whether the above days ago result is equal to 0
if daysAgo == 0:
# assigning 7 to the days ago
daysAgo = 7
# Subtract the above number of days from the current date(start date)
# to get the last week's date of the given day
targetDate = start_date - timedelta(days=daysAgo)
# returning the last week's date of the input date
return targetDate
# printing today's/current date and time
print("Current date and time:", datetime.today())
# printing the last Friday date by calling the above defined
# getPreviousByDay() function by passing inputDay as 'Friday' as an argument
print("Last Friday Date:", getPreviousByDay('Friday'))
# printing the last Monday date
print("Last Monday Date:", getPreviousByDay('Monday'))
# printing the last Wednesday date
print("Last Wednesday Date:", getPreviousByDay('Wednesday'))
Producción
Al ejecutarse, el programa anterior generará el siguiente resultado:
Current date and time: 2023-01-01 08:15:35.935826
Last Friday Date: 2022-12-30 08:15:35.936020
Last Monday Date: 2022-12-26 08:15:35.936153
Last Wednesday Date: 2022-12-28 08:15:35.936264
Método 2: usar el paquete Dateutil
La fecha de inicio y la fecha objetivo se asignan a sus posiciones numéricas correspondientes en la semana en este código (con el lunes como día 0). Luego, para determinar cuántos días han transcurrido desde la última fecha objetivo, se emplea la aritmética modular.
Luego, la fecha objetivo se determina restando la fecha de inicio de la instancia delta de tiempo apropiada.
Puede ser preferible instalar el paquete python-dateutil si ejecuta con frecuencia cálculos de fechas como este.
A continuación se muestra un ejemplo del mismo cálculo realizado utilizando la función relativedelta() de dateutil.
dateutil.relativedelta.relativedelta agrega soporte para períodos definidos en términos de años, meses, semanas o días, así como la capacidad de definir valores absolutos para año, mes o día, mientras que timedelta solo admite días (y semanas).
Ejemplo
El siguiente programa devuelve Determinar la fecha del último viernes y del próximo viernes usando el módulo dateutil -
# importing datetime from datetime module
from datetime import datetime
# importing relativedelta from dateutil module
from dateutil.relativedelta import relativedelta
from dateutil.rrule import *
# taking the start date as the current date
start_date = datetime.now()
# printing the todays/current date and time
print("Current Date:", start_date)
# printing the Next Friday date
print("Next Friday Date:", start_date + relativedelta(weekday=FR))
# printing the Last Friday date
print("Last Friday Date:", start_date + relativedelta(weekday=FR(-1)))
Producción
Al ejecutarse, el programa anterior generará el siguiente resultado:
Current Date: 2023-01-15 08:19:49.267666
Next Friday Date: 2023-01-20 08:19:49.267666
Last Friday Date: 2023-01-13 08:19:49.267666
Conclusión
En este artículo, aprendimos cómo utilizar dos métodos diferentes para obtener la fecha del último viernes en Python. También ponemos en práctica cómo adquirir el último día de la semana del día de entrada determinado y cómo recuperar el siguiente día de la semana del día determinado.