Python'datetime.timedelta'对象没有属性'time'错误

时间:2015-11-18 17:46:45

标签: python datetime

当我运行py脚本时,我收到以下错误:

Traceback (most recent call last):
File "report_monitor.py", line 17, in <module>
timedelta(hours=7).time())
AttributeError: 'datetime.timedelta' object has no attribute 'time'

代码如下:

#!/usr/bin/python

import time
import MySQLdb
import datetime 
from datetime import timedelta

db =      
MySQLdb.connect("localhost","root","password","DB")
cursor = db.cursor() 
cursor.execute("SELECT * FROM reportPref WHERE lastDate LIKE '2015-11-    
18%'")
records = cursor.fetchall()
for record in records:
rec = record[14]     #index 14 is a datetime object.  there is no problem here.
schedLogTime =  
(datetime.datetime.combine(datetime.date(1,1,1),rec.time()) -
timedelta(hours=7).time()) 

print schedLogTime
db.close()

我错过了什么?这让我疯狂......!

2 个答案:

答案 0 :(得分:0)

除了显而易见的,timedelta对象没有那个方法,timedelta不是时间,它是一个向量。它及时为您提供差异。这就是为什么它的时间 delta (delta意味着类似'改变'的东西)。

说“1小时的持续时间”是没有意义的

如果您想减去7小时,请执行以下操作:

timedeltaobj = datetime.timedelta(hours=7)
var = datetimeobj - timedeltaobj

这是datetime module docs

中一个方便的小图表

enter image description here

Glibud根据你可能想做的事情击中了头部。

答案 1 :(得分:0)

Python正试图这样做:

timedelta(hours=7).time()

...这是无效的,因为如错误所示,time对象上没有timedelta方法。你可能想做的是:

(datetime.datetime.combine(datetime.date(1,1,1),rec.time()) -
 timedelta(hours=7)).time()

...首先从timedelta中减去datetime,然后获取生成的time对象的datetime。 (注意与您的代码相比,移动了近括号。)