How to calculate a time interval in seconds between two times (inclusive) in python?

I need to calculate a time interval in seconds between two times (inclusive) and return the result as a list: e.g.

t1 = datetime.now()
# some code
t2 = datetime.now()

start_time = t1.strftime("%H:%M:%S") # 15:20:30
end_time = t2.strftime("%H:%M:%S")   # 15:20:33

def get_time_interval(s_time, e_time):
    # TODO

time_interval = get_time_interval(t1, t2)
print(time_interval) # ['15:20:30', '15:20:31', '15:20:32', '15:20:33']

Is there an elegant way to solve this or do I have to calculate the difference between start and end and add every second in a loop on the start time (e.g. with timedelta(seconds=i)?

>Solution :

It’s probably an overkill but pandas has date_range method that lets you specify start, end times and frequency and returns a range of datetimes:

from datetime import datetime
import time
import pandas as pd
t1 = datetime.now()
time.sleep(3)
t2 = datetime.now()

def get_time_interval(s_time, e_time):
    return pd.date_range(s_time, e_time, freq='S').strftime("%H:%M:%S").tolist()

time_interval = get_time_interval(t1, t2)
print(time_interval) # ['22:16:31', '22:16:32', '22:16:33', '22:16:34']

Leave a Reply