如何使用多个重复条目保留总时间?

时间:2016-07-04 14:25:59

标签: python

我将附加我的代码,但基本上我正在导入带有开始时间/结束时间的csv文件,用于挑选特定项目的案例。所有案例都转到“购物车”,由ID号标识。我想找到选择所有案例的总时间。时间的格式是hh:mm:ss,最初,我使用的是datetime模块,但我无法弄清楚文档,所以我最终只是将所有时间转换为秒,减去每个案例的结束/开始,并将该持续时间添加到总时间。最后,将总时间转换为小时。已经有多少案例被选中,并且除以每小时的总时间以获得每小时挑选的案例。这是正确的逻辑吗?我得到一个非常非常低的数字:7.99箱/小时,这让我相信我的时间/持续时间代码不正确(已检查数量是否正确)。

#instantiate totalTime to zero
totalTime = 0

#every line/row in file; assume already opened above
for line in lines:

    #if there is a different case to pick, find the start time
    if taskId != entryList[0]: #this is so it doesnt duplicate times

        timestart = entryList[7]
        colonStartIndex = timestart.find(":")
        hourstart = int(timestart[0:colonStartIndex])
        minutestart = int(timestart[colonStartIndex+1:colonStartIndex+3])
        colonStartIndex2 = timestart.find(":", colonStartIndex+1)
        secondstart = int(timestart[colonStartIndex2 +1:colonStartIndex2 +3])
        start = hourstart*3600 + minutestart*60 + secondstart

        #start = datetime(year=1, month=1, day=1,hour=hourstart,minute=minutestart,second=secondstart)
        #start = datetime.time(start)

        timeend = entryList[9]
        colonEndIndex = timeend.find(":")
        hourend = int(timeend[0:colonEndIndex])
        minuteend = int(timeend[colonEndIndex+1:colonEndIndex+3])
        colonEndIndex2 = timeend.find(":", colonEndIndex+1)
        secondend = int(timeend[colonEndIndex2+1:colonEndIndex2+3])
        end = hourend*3600 + minuteend*60 + secondend

        #end = datetime(year=1,month=1,day=1,hour=hourend,minute=minuteend,second=secondend)
        #end = datetime.time(end)
        #duration = datetime.combine(date.today(), end) - datetime.combine(date.today(), start)

        duration = end - start
        if duration >= 0:
            duration = duration
        elif duration < 0:
            duration = -1*duration
        totalTime = totalTime + duration
        taskId = entryList[0] #first entry in csv file of each line is cartID



totalTime = totalTime/3600
print(totalTime)
print(quantityCount)
avgNumCases = quantityCount/totalTime
print(avgNumCases)

非常感谢你的帮助!!另外,我列出了日期时间的东西,注释掉了,所以如果你能提出一个基于此的解决方案,我愿意接受它:)我很沮丧,因为我花了很多时间试图解决它,但我'我不是很熟悉,而且文档很难理解(特别是b / c日期时间对象,等等)

1 个答案:

答案 0 :(得分:0)

本节有一个明显的问题:

duration = end - start
if duration >= 0:
    duration = duration
elif duration < 0:
    duration = -1*duration

如果你的起点是22:00:00,终点是21:00:00,你的持续时间将是1小时而不是23小时。