Programa de Python para obtener el enésimo día de la semana después de una fecha determinada

Dado un índice de fecha y día de la semana, la tarea es escribir un programa de Python para obtener la fecha del día de la semana dado que ocurre después de la fecha dada. El índice de días de la semana se basa en la siguiente tabla:

Índice Día laborable
0 Lunes
1 martes
2 miércoles
3 jueves
4 Viernes
5 sábado
6 Domingo

Ejemplos:

Entrada: test_date = datetime.datetime(2017, 3, 14), weekday_idx = 4

Salida: 2017-03-17 

Explicación: el 14 de marzo es martes, es decir, 1 día laborable, el 4º día laborable es viernes, es decir, 17 de marzo.

Entrada: test_date = datetime.datetime(2017, 3, 12), weekday_idx = 5

Salida : 2017-03-18

Explicación: el 12 de marzo es domingo, es decir, el sexto día de la semana, el quinto día de la semana siguiente es sábado, es decir, el 18 de marzo.

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

En esto, restamos la fecha del día de la semana del índice del día de la semana y luego verificamos el índice requerido extraído, luego el día requerido, si es negativo, se suma con 7 y luego el número resultante se agrega a la fecha actual usando timedelta().

Python3

# Python3 code to demonstrate working of
# Next weekday from Date
# Using timedelta() + weekday()
import datetime
 
# initializing dates
test_date = datetime.datetime(2017, 3, 14)
 
# printing original date
print("The original date is : " + str(test_date)[:10])
 
# initializing weekday index
weekday_idx = 4
 
# computing delta days
days_delta = weekday_idx - test_date.weekday()
if days_delta <= 0:
    days_delta += 7
 
# adding days to required result
res = test_date + datetime.timedelta(days_delta)
 
# printing result
print("Next date of required weekday : " + str(res)[:10])

Producción:

The original date is : 2017-03-14
Next date of required weekday : 2017-03-17

Método #2: Usando la función lambda

El uso de la función lambda proporciona una solución abreviada y compacta a la pregunta. 

Python3

# Python3 code to demonstrate working of
# Next weekday from Date
# Using lambda function
import datetime
 
# initializing dates
test_date = datetime.datetime(2017, 3, 14)
 
# printing original date
print("The original date is : " + str(test_date)[:10])
 
# initializing weekday index
weekday_idx = 4
 
# lambda function provides one liner shorthand
def lfnc(test_date, weekday_idx): return test_date + \
    datetime.timedelta(days=(weekday_idx - test_date.weekday() + 7) % 7)
 
 
res = lfnc(test_date, weekday_idx)
 
# printing result
print("Next date of required weekday : " + str(res)[:10])

Producción:

The original date is : 2017-03-14
Next date of required weekday : 2017-03-17

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 *