Last updated: Apr 8, 2024
Reading timeยท3 min
Use the timedelta()
class from the datetime
module to add seconds to
datetime.
The timedelta
class can be passed a seconds
argument and adds the
specified number of seconds to the datetime
object.
from datetime import datetime, timedelta # โ Add seconds to a datetime object dt = datetime(2023, 9, 24, 9, 30, 35) print(dt) # ๐๏ธ 2023-09-24 09:30:35 result = dt + timedelta(seconds=24) print(result) # ๐๏ธ 2023-09-24 09:30:59 # ------------------------------ # โ Add seconds to the current time now = datetime.today() print(now) # ๐๏ธ 2023-07-20 17:40:43.310804 result = now + timedelta(seconds=15) print(result) # ๐๏ธ 2023-07-20 17:40:58.310804
09:30:13
scroll down to the code sample that uses datetime.combine
.Make sure to import the datetime
and
timedelta
classes from the datetime
module.
The first example uses the
datetime
class to create a datetime
object.
We passed values for the year
, month
, day
, hour
, minute
and second
arguments.
Once we have a datetime
object, we can use the timedelta
class to add
seconds to it.
from datetime import datetime, timedelta # โ Add seconds to datetime dt = datetime(2023, 9, 24, 9, 30, 35) print(dt) # ๐๏ธ 2023-09-24 09:30:35 result = dt + timedelta(seconds=24) print(result) # ๐๏ธ 2023-09-24 09:30:59
The code sample adds 24 seconds to the datetime
object.
If you need to add seconds to the current time, use the datetime.today()
method to get a datetime
object that stores the current date and time.
from datetime import datetime, timedelta now = datetime.today() print(now) # ๐๏ธ 2023-07-20 17:42:19.347301 result = now + timedelta(seconds=15) print(result) # ๐๏ธ 2023-07-20 17:42:34.347301
The
datetime.today()
method returns the current local datetime
.
datetime
object because it automatically rolls over the minutes, hours, days, months and years if necessary.This wouldn't be possible if we only had the time component. For example,
11:59:30PM
+ 50
seconds would raise an exception.
datetime
object using datetime.combine
If you only have the time component, use the datetime.combine
method to
combine the time with the current (or some other) date and get a datetime
object.
from datetime import datetime, date, timedelta, time t = time(9, 30, 13) print(t) # ๐๏ธ 09:30:13 result = datetime.combine(date.today(), t) + timedelta(seconds=27) print(result) # ๐๏ธ 2023-07-20 09:30:40 only_t = result.time() print(only_t) # ๐๏ธ 09:30:40
The
datetime.combine
method takes a date
and time
as arguments and returns a new datetime
object by combining them.
Once we get a datetime
object, we can use the timedelta
class to add seconds
to it.
Use the time()
method on the datetime
object if you only need to extract the
time after the operation.
from datetime import datetime, date, timedelta, time t = time(9, 30, 13) print(t) # ๐๏ธ 09:30:13 result = datetime.combine(date.today(), t) + timedelta(seconds=27) print(result) # ๐๏ธ 2023-07-20 09:30:40 # โ Only get the updated time only_t = result.time() print(only_t) # ๐๏ธ 09:30:40
The datetime.time() method returns a time object with the same hour, minute, second and millisecond.
If you need to get the time formatted as HH:MM:SS
, use a formatted string
literal.
from datetime import datetime, timedelta now = datetime.now() print(now) # ๐๏ธ 2023-07-20 17:47:28.100856 result = now + timedelta(seconds=10) print(result) # ๐๏ธ 2023-07-20 17:47:38.100856 print(result.time()) # ๐๏ธ 17:47:38.100856 print(f'{result:%H:%M:%S}') # ๐๏ธ 17:47:38
Formatted string literals
(f-strings) let us include expressions inside of a string by prefixing the
string with f
.
Make sure to wrap expressions in curly braces - {expression}
.
Formatted string literals also enable us to use the format specification mini-language in expression blocks.
You can learn more about the related topics by checking out the following tutorials: