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分钟到一小时的事情。我如何对待这些“漂浮物”,就像它们的时代一样?
答案 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_on
和light_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小时的结果。