计算给定日期列表的时间跨度

时间:2018-11-15 22:09:50

标签: python python-3.x

假设我有以下列表,其中每个条目代表连续几天的特定时间。

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_timediff_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]是列表元素的不同时间...我无法找到一种算法能够捕获哪个时间代表哪一天。

1 个答案:

答案 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