减去python中.csv的时间

时间:2013-09-08 03:18:04

标签: python excel csv python-2.7

    elif row[inc3].startswith('LIGHT ON'):
        onstr = row[inc3 + 1]
        onlst.append(onstr)
    elif row[inc4].startswith('LIGHT OFF'):
        offstr = row[inc4 + 1]
        offlst.append(offstr)

for idx, val in enumerate(onlst):
    tdifflst.append(float(offlst[idx]) - float(onlst[idx]))

在这里,我从脚本中提取代码,该脚本从EXCEL电子表格中提取数据并对其进行分析。两种类型的值是灯打开的时间和灯关闭的时间。例如,在0500点亮,在2300点亮。

我想从关机时间中扣除准时,但我显然不能将这些视为真正的花车,因为60分钟到一小时的事情。我如何对待这些“漂浮物”,就像它们的时代一样?

3 个答案:

答案 0 :(得分:3)

你可以这样做:

>>> from datetime import datetime

>>> light_on = datetime.strptime('0500', '%H%M')
>>> light_off = datetime.strptime('2300', '%H%M')
>>> print light_off - light_on
18:00:00

light_onlight_off是日期时间对象,区别在于timedelta个对象。

答案 1 :(得分:1)

我认为你至少暗示时间将始终以hhmm

的形式报告

因此修改代码

是微不足道的
elif row[inc3].startswith('LIGHT ON'):
    raw_time = row[inc3 + 1]
    hour = raw_time[0:2]
    minute = raw_time[2:]
    minute_hour_fraction = int(minute)/60.
    str_time = ''.join([hour,str(minute_hour_fraction)[1:]])
    float_time = float(str_time)

    onlst.append(float_time)
elif row[inc4].startswith('LIGHT OFF'):
   same as above

答案 2 :(得分:1)

另一种方式:

import datetime

hh, mm = int(offstr[0:2]), int(offstr[2:4])
# a dummy date 101/1/1
toff = datetime.datetime(101, 1, 1, hh, mm)

hh, mm = int(onstr[0:2]), int(onstr[2:4])
tdiff = toff - datetime.timedelta(hours=hh, minutes=mm)

tdiff.hour
tdiff.minute

此外,您可以将整个日期(年,月,日)添加到日期时间对象,这样您就可以获得差异大于24小时的结果。