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