Dada una lista de fechas y un rango de fechas, la tarea es escribir un programa Python para verificar si existe alguna fecha en la lista en un rango dado.
Ejemplo:
Entrada: test_list = [datetime(2019, 12, 30), datetime(2018, 4, 4), datetime(2016, 12, 21), datetime(2021, 2, 2), datetime(2020, 2, 3), fecha y hora (2017, 1, 1)], fecha_strt, fecha_fin = fecha y hora (2019, 3, 14), fecha y hora (2020, 1, 4)
Salida: Verdadero
Explicación: el 30 de diciembre de 2019 se encuentra en el rango del 14 de marzo de 2019 al 4 de enero de 2020, por lo tanto, es verdadero.
Entrada: test_list = [datetime(2018, 4, 4), datetime(2016, 12, 21), datetime(2021, 2, 2), datetime(2020, 2, 3), datetime(2017, 1, 1)] , fecha_strt, fecha_fin = fecha y hora (2019, 3, 14), fecha y hora (2020, 1, 4)
Salida: Falso
Explicación: ninguna fecha se encuentra dentro del rango.
Método 1: Usar bucle
En esto, para cada elemento, verificamos usando condicionales si alguna fecha cae en el rango, si se encuentra, se devuelve verdadero.
Python3
# Python3 code to demonstrate working of # Test for date in date range # Using loop from datetime import datetime # initializing list test_list = [datetime(2019, 12, 30), datetime(2018, 4, 4), datetime(2016, 12, 21), datetime(2021, 2, 2), datetime(2020, 2, 3), datetime(2017, 1, 1)] # printing original list print("The original list is : " + str(test_list)) # initializing date ranges date_strt, date_end = datetime(2019, 3, 14), datetime(2020, 1, 4) res = False for ele in test_list: # checking for date in range if ele >= date_strt and ele <= date_end: res = True # printing result print("Does list contain any date in range : " + str(res))
Producción:
La lista original es: [datetime.datetime(2019, 12, 30, 0, 0), datetime.datetime(2018, 4, 4, 0, 0), datetime.datetime(2016, 12, 21, 0, 0) , fechahora.fechahora(2021, 2, 2, 0, 0), fechahora.fechahora(2020, 2, 3, 0, 0), fechahora.fechahora(2017, 1, 1, 0, 0)]
¿La lista contiene alguna fecha en el rango?: Verdadero
Método 2: Usar cualquiera()
Similar al método anterior, la única diferencia es que any() se usa para verificar la presencia de cualquier fecha en el rango.
Python3
# Python3 code to demonstrate working of # Test for date in date range # Using any() from datetime import datetime # initializing list test_list = [datetime(2019, 12, 30), datetime(2018, 4, 4), datetime(2016, 12, 21), datetime(2021, 2, 2), datetime(2020, 2, 3), datetime(2017, 1, 1)] # printing original list print("The original list is : " + str(test_list)) # initializing date ranges date_strt, date_end = datetime(2019, 3, 14), datetime(2020, 1, 4) # any() for checking presence of any date in range res = any(ele >= date_strt and ele <= date_end for ele in test_list) # printing result print("Does list contain any date in range : " + str(res))
Producción:
La lista original es: [datetime.datetime(2019, 12, 30, 0, 0), datetime.datetime(2018, 4, 4, 0, 0), datetime.datetime(2016, 12, 21, 0, 0) , fechahora.fechahora(2021, 2, 2, 0, 0), fechahora.fechahora(2020, 2, 3, 0, 0), fechahora.fechahora(2017, 1, 1, 0, 0)]
¿La lista contiene alguna fecha en el rango?: Verdadero
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