![](/img/trans.png)
[英]comparing datetime.timedelta and datetime.time in python
[英]Python 3 - Working with datetime.time objects - timedelta
刚遇到一个我在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,而不是字节
当取消注释最后一行并注释其上方的三行时,我得到以下信息:
dt = datetime.strptime(t1,FMT) - datetime.strptime(t2,FMT)
TypeError:必须为str,而不是datetime.time
所以我真的不明白。 它是datetime.time
,但不是同一时间。有人可以帮助我吗?
谢谢!
您的某些对象是bytes
对象,而另一些是datetime.time
对象。 换句话说,您有多种对象。
请注意,您的第一个错误是end_timestamps[i]
失败,而不是start_timestamps[i]
。 因此, start_timestamps[i]
是一个time
对象。 如果timestamps
中的所有对象都包含bytes
对象,则datetime.combine(d, start_timestamps[i])
将会失败。
你需要弄清楚为什么你的ts.time()
在您的调用map()
调用返回不一致的数据类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.