Open In App

The Best Way to Add N Seconds to datetime.time in Python

Last Updated : 23 Jul, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

Adding a specified number of seconds to a datetime.time object in Python can be a bit tricky because of the datetime.time class does not support date-related operations such as adding seconds directly. While we can't directly add seconds to a datetime.time object, we can achieve this by combining it with a datetime.date object and using datetime.timedelta

Here's a detailed guide on how to add N seconds to a datetime.time object using Python.

The Limitation of datetime.time

First, it's important to understand that datetime.time represents a time without any date associated with it. This means that while it can store hours, minutes, seconds, and microseconds, it does not handle operations that cross over to different days, like adding time that would roll over past midnight.

Step 1 - Import Necessary Classes from datetime

Before starting, ensure that the necessary classes are available by importing them:

Python
from datetime import datetime, time, timedelta
  • datetime: Combines both date and time elements.
  • time: Represents time, independent of any day.
  • timedelta: Represents a duration, the difference between two dates or times.

Step 2 - Create a datetime.time Instance

Define the initial time to which you want to add seconds. For example, if we start with 11:59 PM (23:59) and want to add 35 seconds, we'd set it up like this:

Python
# 23:59 or 11:59 PM
initial_time = time(23, 59)

Step 3 - Convert datetime.time to datetime.datetime

Since datetime.time does not support addition directly, convert it to a datetime.datetime object by combining it with a date. Any date works as long as you only care about the time part:

Python
# Use today's date for the conversion
current_date = datetime.now().date()
datetime_combination = datetime.combine(current_date, initial_time)

Step 4 - Add Seconds Using timedelta

Create a timedelta object representing the number of seconds you want to add, then add this to the datetime instance:

Python
# Adding 35 seconds
seconds_to_add = 35
new_datetime = datetime_combination + timedelta(seconds=seconds_to_add)

Step 5 - Extract the New Time

After adding the seconds, convert the datetime object back to a datetime.time object to get the new time:

Python
new_time = new_datetime.time()
print("New Time:", new_time)

Complete Code

Python
from datetime import datetime, time, timedelta

# 23:59 or 11:59 PM
initial_time = time(23, 59)

current_date = datetime.now().date()
datetime_combination = datetime.combine(current_date, initial_time)

# Adding 35 seconds
seconds_to_add = 35
new_datetime = datetime_combination + timedelta(seconds=seconds_to_add)

new_time = new_datetime.time()
print("New Time:", new_time)

Output
New Time: 23:59:35

Conclusion

This method effectively bypasses the limitation of datetime.time by leveraging datetime.datetime for time manipulation, then extracting the time part again. It's a practical workaround for scenarios where we need to add a duration to a specific time of day, without changing the date part.


Article Tags :
Practice Tags :

Similar Reads