Dada una lista de fechas, la tarea es escribir un programa Python para verificar si todas las fechas son consecutivas en la lista.
Entrada: [fecha y hora (2019, 12, 30), fecha y hora (2019, 12, 31), fecha y hora (2020, 1, 1), fecha y hora (2020, 1, 2), fecha y hora (2020, 1, 3), fecha y hora ( 2020, 1, 4)]
Salida: Verdadero
Explicación : Todas las fechas son consecutivas, del 30 de diciembre de 2019 al 4 de enero de 2020.
Entrada: [fecha y hora (2019, 12, 29), fecha y hora (2019, 12, 31), fecha y hora (2020, 1, 1), fecha y hora (2020, 1, 2), fecha y hora (2020, 1, 3), fecha y hora ( 2020, 1, 4)]
Salida: Falso
Explicación: fechas no consecutivas.
Método n. ° 1: usar días() + bucle
En esto, verificamos las fechas consecutivas al verificar la diferencia de días con respecto a la fecha anterior usando days(). La iteración de todas las fechas se realiza mediante un bucle.
Python3
# Python3 code to demonstrate working of # Test if dates are consecutive # Using days() + loop from datetime import datetime, timedelta # initializing list test_list = [datetime(2019, 12, 30), datetime(2019, 12, 31), datetime(2020, 1, 1), datetime(2020, 1, 2), datetime(2020, 1, 3), datetime(2020, 1, 4)] # printing original list print("The original list is : " + str(test_list)) # using loop for iterating all elements res = True for idx in range(1, len(test_list)): # checking for 1 day time difference if (test_list[idx] - test_list[idx - 1]).days != 1: res = False break # printing result print("Are dates consecutive : " + str(res))
Producción:
La lista original es: [datetime.datetime(2019, 12, 30, 0, 0), datetime.datetime(2019, 12, 31, 0, 0), datetime.datetime(2020, 1, 1, 0, 0) , fechahora.fechahora(2020, 1, 2, 0, 0), fechahora.fechahora(2020, 1, 3, 0, 0), fechahora.fechahora(2020, 1, 4, 0, 0)]
Son fechas consecutivas: Verdadero
Método #2: Usando all() + days()
Similar al método anterior, la única diferencia aquí es que all() se usa para verificar la consecución de cada día para una solución más compacta.
Python3
# Python3 code to demonstrate working of # Test if dates are consecutive # Using all() + days() from datetime import datetime, timedelta # initializing list test_list = [datetime(2019, 12, 30), datetime(2019, 12, 31), datetime(2020, 1, 1), datetime(2020, 1, 2), datetime(2020, 1, 3), datetime(2020, 1, 4)] # printing original list print("The original list is : " + str(test_list)) # using loop for iterating all elements res = all((test_list[idx] - test_list[idx - 1]).days == 1 for idx in range(1, len(test_list))) # printing result print("Are dates consecutive : " + str(res))
Producción:
La lista original es: [datetime.datetime(2019, 12, 30, 0, 0), datetime.datetime(2019, 12, 31, 0, 0), datetime.datetime(2020, 1, 1, 0, 0) , fechahora.fechahora(2020, 1, 2, 0, 0), fechahora.fechahora(2020, 1, 3, 0, 0), fechahora.fechahora(2020, 1, 4, 0, 0)]
Son fechas consecutivas: 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