【发布时间】:2014-09-07 20:50:23
【问题描述】:
我正在编写我的 python 脚本来计算开始日期和结束日期格式之间的持续时间,例如 20140520160000 和 20140520170000,这样我就可以得到时间。
这段代码有问题:
if epgDuration >= 0.10 and epgDuration <= 0.30:
epgwidth = "250"
当我尝试比较 0.10 分钟和 0.30 分钟之间的时间范围时出现错误。
我得到的错误是:TypeError: can't compare datetime.timedelta to float。
错误在这一行跳转:
if epgDuration >= 0.10 and epgDuration <= 0.30:
结果如下:
14:44:55 T:1580 NOTICE: 0:30:00
14:44:55 T:1580 NOTICE: 2:30:00
14:44:55 T:1580 NOTICE: 3:00:00
14:44:55 T:1580 NOTICE: 1:00:00
14:44:55 T:1580 NOTICE: 0:30:00
14:44:55 T:1580 NOTICE: 0:30:00
14:44:55 T:1580 NOTICE: 0:30:00
14:44:55 T:1580 NOTICE: 0:30:00
14:44:55 T:1580 NOTICE: 0:30:00
14:44:55 T:1580 NOTICE: 0:30:00
14:44:55 T:1580 NOTICE: 1:00:00
14:44:55 T:1580 NOTICE: 0:30:00
14:44:55 T:1580 NOTICE: 0:30:00
14:44:55 T:1580 NOTICE: 0:30:00
这是我用来持续时间的代码:
for row in programs:
program_startdate = str(row[2])
program_endDate = str(row[3])
try:
start_date = datetime.datetime.strptime(program_startdate, "%Y%m%d%H%M%S")
end_date = datetime.datetime.strptime(program_endDate, "%Y%m%d%H%M%S")
except TypeError:
start_date = datetime.datetime.fromtimestamp(time.mktime(time.strptime(program_startdate, "%Y%m%d%H%M%S")))
end_date = datetime.datetime.fromtimestamp(time.mktime(time.strptime(program_endDate, "%Y%m%d%H%M%S")))
#workout the duration times to get the program time
epgDuration = end_date - start_date
if epgDuration >= 0.10 and epgDuration <= 0.30:
epgwidth = "250"
elif epgDuration >= 1.00 and epgDuration <= 1.29:
epgwidth = "500"
print epgwidth
【问题讨论】:
-
这里的 0.10 分钟和 0.30 分钟究竟是什么意思?我认为您的意思是 10 分钟和 30 分钟,而不是 6 和 18 秒。
-
@MartijnPieters 是的,你是对的。你能帮我如何在 if 语句之外使用
print epgwidth吗?? -
我更新了我的答案,以反映我认为您正在努力实现的目标。如果您使用此类详细信息更新您的问题,它会有所帮助。