繁体   English   中英

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

[英]Python 'datetime.timedelta' object has no attribute 'time' error

当我运行我的 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()

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

Python 正在尝试这样做:

timedelta(hours=7).time()

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

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

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

除了显而易见的,timedelta 对象没有那个方法, timedelta不是时间,它是一个向量。 它给你时间上的差异 这就是为什么它是时间增量(增量意味着类似于“变化”的东西)。

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

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

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

这是日期时间模块文档中的一个方便的小图表

在此处输入图片说明

就您可能想要做的事情而言,Glibud 一针见血。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM