Python: encuentra fechas consecutivas en una lista de fechas

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *