Python 3 - 使用datetime.time对象 - timedelta

时间:2015-09-20 09:41:25

标签: python django datetime python-3.x time

我遇到的问题是我在python代码中无法理解。

timestamps = list(map(lambda ts: ts.time, timestamps))
start_timestamps = timestamps
end_timestamps = timestamps[1:]
d = date(2000, 1, 1)
FMT = '%H:%M:%S'
for i, t1 in enumerate(start_timestamps):
    t1 = datetime.combine(d, start_timestamps[i])
    t2 = datetime.combine(d, end_timestamps[i])
    dt = t1 - t2
    #dt = datetime.strptime(t1,FMT) - datetime.strptime(t2,FMT)

通过在我的django项目中使用它,我收到以下错误:

t2 = datetime.combine(d, end_timestamps[i])
  

TypeError:combine()参数2必须是datetime.time,而不是bytes

当取消注释最后一行并评论其上方的三行时,我得到以下内容:

dt = datetime.strptime(t1,FMT) - datetime.strptime(t2,FMT)
  

TypeError:必须是str,而不是datetime.time

所以我真的不明白。它是datetime.time,但同时它不是......任何人都可以帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

某些对象是bytes个对象,其他对象是datetime.time个对象。换句话说,你有各种各样的对象。

请注意,在您的第一个错误中,end_timestamps[i]失败了,而不是start_timestamps[i]。因此,start_timestamps[i]是一个time对象。如果timestamps bytes个对象datetime.combine(d, start_timestamps[i])中的所有对象都失败了。

您需要弄清楚ts.time()调用中map()次调用返回不一致数据类型的原因。