Python: Get Number of Days Between Dates
In this tutorial, we'll take a look at how to get the number of days between two dates in Python.
We'll be using the built-in
datetime package, that allows you to really easily work with
datetime objects in Python.
Creating a Datetime Object
As datetime is a built-in module, you can access it right away by importing it at the top of your Python file.
You can construct
datetime objects in a few different ways:
from datetime import datetime date_string = "1 January, 2021" now = datetime.now() # Create Datetime based on system clock dt1 = datetime(day=1, month=1, year=2021) # Create Datetime with given arguments dt2 = datetime.strptime(date_string, "%d %B, %Y") # Create Datetime from String
There are certain rules to follow when it comes to Converting Strings to Datetime in Python.
Get Number of Days Between Dates in Python
Trying to measure the numbers of days between dates without using the datetime module is a deceptively complex task - between accounting for leap years and the number of days in each month, trying to create your own implementation is nonsensical.
datetimehowever, it becomes trivial.
You can simply subtract a
datetime from each other, to get the number of days between them:
from datetime import datetime date1 = datetime.now() date2 = datetime(day=1, month=7, year=2021) timedelta = date2 - date1 print(timedelta)
This returns a
timedelta object, which contains
microseconds and represents the duration between any two
Printing this object will return the days, hours, minutes, seconds and microseconds to that event:
149 days, 5:22:52.255124
If you're not interested in some of these metrics, you can specify which of them you'd like to access with
now = datetime.now() new_years = datetime(day=1, month=1, year=2022) countdown = new_years - now print('Today is: ', now) print('New Year is on: ', new_years) print('Days until New Years: ', countdown.days)
Here, we've assigned the days between
countdown, which is a
Then, we can simply access the
days parameter of that object to get the number of days between them. This results in:
Today is: 2021-02-01 18:35:12.272524 New Year is on: 2022-01-01 00:00:00 Days until New Years: 333
Adding and Subtracting Days Using TimeDelta
What if instead of trying to subtract two known dates from each other, you wanted to add or subtract a time-frame? For example, a customer subscribed to your service for a monthly fee. You'll want to remind them to renew it after a 30 days.
You can construct a time-frame for those 30 days, using
timedelta and add or subtract that from any other
from datetime import datetime, timedelta now = datetime.now() thirty_days = timedelta(days=30) print('In 30 days: ', now + thirty_days) print('30 days ago: ', now - thirty_days)
This results in:
In 30 days: 2021-03-03 18:41:49.922082 30 days ago: 2021-01-02 18:41:49.922082
This is an incredibly useful feature when trying to implement scheduling, or retrieving database entries based off a moving window (such as the trailing 30 days).
In this tutorial, we've covered everything you need to know about getting the number of days between two dates in Python.
We've worked with
datetime objects and
timedelta to achieve this functionality.