0
    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 分钟到一个小时的事情,我显然不能将这些视为真正的花车。我如何像现在一样对待这些“花车”?

4

3 回答 3

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_on并且light_off是 datetime 对象,区别是timedelta对象。

于 2013-09-08T03:36:06.043 回答
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
于 2013-09-08T03:41:47.803 回答
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

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

于 2013-09-08T03:53:16.717 回答