假设我有以下列表,其中每个条目代表连续几天的特定时间。
time = ["09:17:28", "17:47:45", "01:43:12", "23:18:22", "05:34:34"]
比方说,我想计算从第一个事件到最后一个事件的时间,或者如果我们想从time[i]
到time[j]
概括一下,我该怎么做有效吗?
我尝试了用times
拆分split(":")
的每个元素的蛮力方法,然后试图找出在哪里添加必要的24/48 / ...小时的方法,但是我只是找不到解决办法。我找到了this解决方案来解决一个非常相似的问题,但是我很难理解到底发生了什么。
关于应该如何解决此问题的任何建议?
关于以上发布的解决方案:我确实了解函数to_time
和diff_time
的作用,但是我不知道如果两次比较的日期如何将其概括化给出的是不同的。
到目前为止,我已经尝试过:
time = ["09:17:28", "17:47:45", '01:43:12', "23:18:22", "05:34:34"]
time_2 = []
for k in range(len(time)):
time_2.append(time[k].split(":"))
for j in range(len(time[k].split(":"))):
time_2[k][j] = float(time_2[k][j])
time_2 = np.array(time_2)
这给了我一个矩阵,其中time_2[:, 0]
是列表元素的不同时间...我无法找到一种算法能够捕获哪个时间代表哪一天。
答案 0 :(得分:2)
如果您想检查经过的总时间,并假设数据在向前发展,则可以使用以下方法:
import datetime
times = ["09:17:28", "17:47:45", "01:43:12", "23:18:22", "05:34:34"]
converted = [datetime.datetime.strptime(i, '%H:%M:%S') for i in times]
a = [(k - j) if j < k else (k - j) + datetime.timedelta(1) for j, k in zip(converted, converted[1:])]
print(sum(a, datetime.timedelta()))
#1 day, 20:17:06