When working with dates and times in Python, understanding how to measure, manipulate, and calculate differences between moments is crucial. This is where timedelta objects from Python's datetime module come into play. Time deltas represent durations — the difference between two dates or times — allowing you to add or subtract time periods, calculate intervals, or even schedule future or past events.
In this comprehensive lesson, we'll explore everything you need to know about timedelta objects: what they are, how to create and use them, and practical examples that illustrate their power in real-world programming.
What is a Time Delta?
At its core, a timedelta represents a duration, the amount of time between two dates or times. Unlike a timestamp or date, which marks a specific point in time, a timedelta is a length of time, such as "3 days," "5 hours and 20 minutes," or "1 week and 2 days."
In Python's datetime module, the class timedelta encapsulates these durations and supports arithmetic operations, making it easy to add or subtract time intervals from dates.
💡 Key Insight
Think of a timedelta as a stopwatch showing elapsed time, not a clock showing "when."
Why Use Time Deltas?
- Calculate the difference between two dates or times.
- Add or subtract time intervals to schedule future or past dates.
- Measure durations, such as how long a process took.
- Perform date/time arithmetic while handling complexities like leap years, daylight savings, and varying month lengths.

Creating a timedelta Object
To create a timedelta, you first need to import it from the datetime module:
📌 Deep Dive: Importing timedelta
from datetime import timedelta
Once imported, you can create a timedelta by specifying any combination of the following keyword arguments:
days– number of daysseconds– number of seconds (0–86399, i.e., less than a day)microseconds– number of microseconds (0–999999)milliseconds– number of millisecondsminutes– number of minuteshours– number of hoursweeks– number of weeks
All arguments are optional and default to zero. The arguments are additive, so you can combine them to represent complex durations.
📌 Deep Dive: Creating Time Deltas
from datetime import timedelta
# 3 days, 4 hours, 30 minutes
delta = timedelta(days=3, hours=4, minutes=30)
print(delta)
# Output: 3 days, 4:30:00
# 2 weeks and 5 milliseconds
delta2 = timedelta(weeks=2, milliseconds=5)
print(delta2)
# Output: 14 days, 0:00:00.005000
14 days, 0:00:00.005000
Using timedelta with datetime Objects
The primary use of timedelta is in arithmetic with datetime objects. You can add or subtract timedeltas to calculate new dates or find differences.
For example, to get a date 10 days from today, you add a timedelta of 10 days to the current date.
📌 Deep Dive: Adding Time Deltas to Dates
from datetime import datetime, timedelta
today = datetime.now()
print("Today:", today)
# Create a timedelta of 10 days
ten_days = timedelta(days=10)
# Add 10 days to today
future_date = today + ten_days
print("10 days from today:", future_date)
# Subtract 3 hours
three_hours = timedelta(hours=3)
past_time = today - three_hours
print("3 hours ago:", past_time)
10 days from today: 2024-06-11 15:45:12.345678
3 hours ago: 2024-06-01 12:45:12.345678
Subtracting Two datetime Objects
When you subtract one datetime from another, Python returns a timedelta representing the difference between those two moments.
📌 Deep Dive: Difference Between Two Dates
from datetime import datetime
start = datetime(2024, 1, 1, 8, 0, 0)
end = datetime(2024, 1, 10, 18, 30, 0)
duration = end - start
print("Duration:", duration)
print("Days:", duration.days)
print("Seconds:", duration.seconds)
Days: 9
Seconds: 37800
The days attribute returns the whole number of days contained in the timedelta. The seconds attribute returns the remaining seconds after counting the days. To get the total seconds represented by the timedelta (including days), use the total_seconds() method.
📌 Deep Dive: Total Seconds in timedelta
print("Total seconds:", duration.total_seconds())
# Output: 842700.0 (which is 9 days * 86400 + 37800 seconds)
Common Operations with timedelta
The timedelta class supports:
- Addition and subtraction with other timedeltas or datetime objects.
- Multiplication and division by integers or floats to scale durations.
- Comparison operators like
<,>,==for duration comparisons.
| Operation | Example | Result |
|---|---|---|
| Addition | td1 + td2 | Sum of two durations |
| Subtraction | td1 - td2 | Difference between durations |
| Multiplication | td * 3 | Duration scaled by 3 |
| Division | td / 2 | Duration halved |
| Comparison | td1 > td2 | Boolean: True if td1 longer than td2 |
📌 Deep Dive: Arithmetic with timedeltas
td1 = timedelta(days=5, hours=3)
td2 = timedelta(days=2, minutes=30)
print("td1 + td2 =", td1 + td2)
print("td1 - td2 =", td1 - td2)
print("td1 * 2 =", td1 * 2)
print("td2 / 2 =", td2 / 2)
print("Is td1 longer than td2?", td1 > td2)
td1 - td2 = 2 days, 2:30:00
td1 * 2 = 10 days, 6:00:00
td2 / 2 = 1 day, 0:15:00
Is td1 longer than td2? True
Practical Example: Countdown Timer
Let's create a simple countdown timer that calculates how many days, hours, and minutes remain until a target date.
📌 Deep Dive: Countdown Timer with timedelta
from datetime import datetime, timedelta
target_date = datetime(2024, 12, 31, 23, 59, 59)
now = datetime.now()
time_left = target_date - now
if time_left.total_seconds() > 0:
days = time_left.days
hours = time_left.seconds // 3600
minutes = (time_left.seconds % 3600) // 60
print(f"Time left until New Year's Eve: {days} days, {hours} hours, {minutes} minutes")
else:
print("The target date has already passed.")
Important Details and Gotchas
⚠️ Beware of Negative Timedeltas
If you subtract a later date from an earlier date, the resulting timedelta will be negative. This can affect your logic if you don't explicitly check for negative values.
⚠️ Timedelta Does Not Track Months or Years
The timedelta class represents fixed durations in days and smaller units, but it does not support months or years because they vary in length. For month or year calculations, consider external libraries like dateutil or handle logic carefully.
💡 Handy Tip
Use timedelta for arithmetic with durations that can be precisely expressed in days, seconds, and microseconds. For calendar-based calculations involving months or years, specialized tools or manual approaches are necessary.
Summary: Key Takeaways
timedeltaobjects represent durations or differences between two dates/times.- You can create timedeltas specifying days, seconds, microseconds, milliseconds, minutes, hours, and weeks.
- Subtracting two
datetimeobjects yields a timedelta. - Timedeltas support arithmetic like addition, subtraction, multiplication, and comparison.
- Be mindful that timedelta does not handle months or years due to their variable length.
Mastering timedelta unlocks powerful date and time manipulations in Python, essential for scheduling, logging, countdowns, and any application that relies on time calculations.
Quick Knowledge Check
Test what you just learned
Question 1 of 2
What does subtracting one datetime object from another return?
Question 2 of 2
Which of the following is NOT a valid argument when creating a timedelta object?
Loading results...