def roundTime(dt=None, roundTo=60):
"""Round a datetime object to any time laps in seconds
dt : datetime.datetime object, default now.
roundTo : Closest number of seconds to round to, default 1 minute.
Author: Thierry Husson 2012 - Use it as you want but don't blame me.
"""
if dt == None : dt = datetime.datetime.now()
seconds = (dt.replace(tzinfo=None) - dt.min).seconds
rounding = (seconds+roundTo/2) // roundTo * roundTo
return dt + datetime.timedelta(0,rounding-seconds,-dt.microsecond)
def times10sec(startT, endT):
retval = startT
yield startT
while startT < endT:
startT = startT + datetime.timedelta(seconds=10)
yield startT
import csv
cr01 = csv.reader(open ('c:\kewoo\eai\d20171024.0930-1055.AcurityConnector.csv'))
simul = {}
for i in cr01:
startT = roundTime(datetime.datetime.strptime(i[4],"%Y-%m-%d %H:%M:%s"))
endT = roundTime(datetime.datetime.strptime(i[5],"%Y-%m-%d %H:%M:%s"))
for j in times10sec(startT, endT):
if j in simul:
simul[j] = simul[j] + 1
else:
simul[j] = 0
if endT in simul:
simul[endT] = simul[endT] - 1
else:
simul[endT] = 0
#if i[3] == '0':
# endT = roundTime(datetime.datetime.strptime(i[5],"%Y-%m-%d %H:%M:%s"))
#else:
# endT = roundTime(datetime.datetime.strptime(i[5],"%Y-%m-%d %H:%M:%s")) + datetime.timedelta(seconds=65)
for x in simul.iteritems():
print str(x[0]), ", ", x[1]