Фундаментальная проблема здесь заключается в том, что модуль datetime
имеет дело с реальным временем настенных часов, тогда как вы пытаетесь иметь дело с продолжительностью . Следовательно, единственный действительно применимый класс в модуле datetime
для решения вашей проблемы - это timedelta
, который по существу выражает длительности. Чтобы разобрать ваши строки в timedelta
, вам нужно сделать это немного вручную:
>>> from datetime import timedelta
>>> h, m, s = '00:02:43.080'.split(':')
>>> timedelta(hours=int(h), minutes=int(m), seconds=float(s))
datetime.timedelta(seconds=163, microseconds=80000)
Если у вас теперь есть два таких timedelta
s, вы можете вычесть их:
>>> end - start
datetime.timedelta(microseconds=680000)
И вы можете добавить их к существующему timedelta
:
diff = timedelta()
diff += end - start
Полный пример:
from datetime import timedelta
diff = timedelta()
def parse_ts(ts: str) -> timedelta:
h, m, s = ts.split(':')
return timedelta(hours=int(h), minutes=int(m), seconds=float(s))
timestamps = [('00:02:42.400', '00:02:43.080'), ...]
for start, end in timestamps:
diff += parse_ts(end) - parse_ts(start)
print(diff)