Here is a way to do it with the datetime library and the strptime function:
From your previous question, it seems like your times are a list of strings.
times = [
'2017-12-21T14:49:17.518Z',
'2017-12-21T14:50:49.723Z',
'2017-12-21T14:50:54.028Z',
'2017-12-21T14:50:54.343Z',
'2017-12-21T14:50:59.084Z',
'2017-12-21T14:50:59.399Z',
'2017-12-21T14:51:04.142Z',
'2017-12-21T14:51:04.457Z',
'2017-12-21T14:51:09.204Z',
'2017-12-21T14:51:09.521Z',
'2017-12-21T14:51:14.261Z',
'2017-12-21T14:51:14.579Z',
'2017-12-21T14:51:19.326Z',
'2017-12-21T14:51:19.635Z',
'2017-12-21T14:51:24.376Z',
'2017-12-21T14:51:24.691Z',
'2017-12-21T14:51:29.435Z',
'2017-12-21T14:51:29.750Z',
'2017-12-21T14:51:34.498Z',
'2017-12-21T14:51:34.813Z'
]
Convert them to datetime objects using strptime.The map() function applies a function to each element in an iterable.
times_converted = map(
lambda x: datetime.datetime.strptime(x, '%Y-%m-%dT%H:%M:%S.%fZ'),
times
)
The second argument to strptime above is the format string, which defines how the conversion should happen.
Now you can subtract consecutive times and use the total_seconds() method of datetime.timedelta to get the difference as desired:
diffs = [
(b-a).total_seconds() for a, b in zip(times_converted[::2], times_converted[1::2])
]
#[92.205, 0.315, 0.315, 0.315, 0.317, 0.318, 0.309, 0.315, 0.315, 0.315]
I used zip() to get pairs of times from the list to subtract. The notation [::2] means take every other item in the list, starting at index 0. Likewise [1::2] means take every other item in the list, starting at index 1. More on python's slice notation here.
If you're not comfortable with list comprehensions and zip(), the above code can also be written as single for loop:
diffs = []
for i in range(0,len(times), 2):
diffs.append((times_converted[i+1]-times_converted[i]).total_seconds())
More on zip()
The zip() function takes two iterables and returns pairs of tuples. For instance, consider the following example:
# suppose you had two lists
X = ['A', 'B', 'C']
Y = ['X', 'Y', 'Z']
print(zip(X, Y))
#[('A', 'X'), ('B', 'Y'), ('C', 'Z')]
So essentially it takes one item from the first list and one item from the second list and returns this as a tuple.