当我运行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()
我错过了什么?这让我疯狂......!
答案 0 :(得分:0)
除了显而易见的,timedelta对象没有那个方法,timedelta
不是时间,它是一个向量。它及时为您提供差异。这就是为什么它的时间 delta (delta意味着类似'改变'的东西)。
说“1小时的持续时间”是没有意义的
如果您想减去7小时,请执行以下操作:
timedeltaobj = datetime.timedelta(hours=7)
var = datetimeobj - timedeltaobj
中一个方便的小图表
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
。 (注意与您的代码相比,移动了近括号。)