Skip to content
Related Articles

Related Articles

Save Article
Improve Article
Save Article
Like Article

Python – Find consecutive dates in a list of dates

  • Last Updated : 16 May, 2021

Given a list of dates, the task is to write a Python program to check if all the dates are consecutive in the list.

Input : [datetime(2019, 12, 30), datetime(2019, 12, 31), datetime(2020, 1, 1), datetime(2020, 1, 2), datetime(2020, 1, 3), datetime(2020, 1, 4)]

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning - Basic Level Course

Output : True



Explanation : All dates are consecutive, from 30 Dec 2019 to 4 January 2020.

Input : [datetime(2019, 12, 29), datetime(2019, 12, 31), datetime(2020, 1, 1), datetime(2020, 1, 2), datetime(2020, 1, 3), datetime(2020, 1, 4)]

Output : False

Explanation : Non consecutive dates.

Method #1 : Using days() + loop

In this, we check consecutive dates by checking days difference from the previous date using days(). The iteration of all dates is done using a loop.

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))

Output:

The original list is : [datetime.datetime(2019, 12, 30, 0, 0), datetime.datetime(2019, 12, 31, 0, 0), datetime.datetime(2020, 1, 1, 0, 0), datetime.datetime(2020, 1, 2, 0, 0), datetime.datetime(2020, 1, 3, 0, 0), datetime.datetime(2020, 1, 4, 0, 0)]

Are dates consecutive : True

Method #2 : Using all() + days()

Similar to the above method, the only difference here is all() is used to check for each day consecution for a more compact solution.

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))

Output:

The original list is : [datetime.datetime(2019, 12, 30, 0, 0), datetime.datetime(2019, 12, 31, 0, 0), datetime.datetime(2020, 1, 1, 0, 0), datetime.datetime(2020, 1, 2, 0, 0), datetime.datetime(2020, 1, 3, 0, 0), datetime.datetime(2020, 1, 4, 0, 0)]

Are dates consecutive : True




My Personal Notes arrow_drop_up
Recommended Articles
Page :