我将附加我的代码,但基本上我正在导入带有开始时间/结束时间的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日期时间对象,等等)
答案 0 :(得分:0)
本节有一个明显的问题:
duration = end - start
if duration >= 0:
duration = duration
elif duration < 0:
duration = -1*duration
如果你的起点是22:00:00,终点是21:00:00,你的持续时间将是1小时而不是23小时。