我正在使用此代码:
def calcDateDifferenceInMinutes(end_date,start_date):
fmt = '%Y-%m-%d %H:%M:%S'
start_date_dt = datetime.strptime(start_date, fmt)
end_date_dt = datetime.strptime(end_date, fmt)
# convert to unix timestamp
start_date_ts = time.mktime(start_date_dt.timetuple())
end_date_ts = time.mktime(end_date_dt.timetuple())
# they are now in seconds, subtract and then divide by 60 to get minutes.
return (int(end_date_ts-start_date_ts) / 60)
来自这个问题:stackoverflow question
但是我收到了这条消息:
属性错误:' str'对象没有属性' datetime'
我已经审核了类似的问题,但除了做以下事情之外,没有其他选择:
start_date_dt = datetime.datetime.strptime(start_date, fmt)
这里有完整的痕迹:
> Traceback (most recent call last): File "tabbed_all_cols.py", line
> 156, in <module>
> trip_calculated_duration = calcDateDifferenceInMinutes (end_datetime,start_datetime) File "tabbed_all_cols.py", line 41, in
> calcDateDifferenceInMinutes
> start_date_dt = datetime.datetime.strptime(start_date, fmt) AttributeError: 'str' object has no attribute 'datetime'
第41行是:
start_date_dt = datetime.datetime.strptime(start_date, fmt)
有人能说清楚我错过的东西吗?
新更新:我还在努力解决这个问题。我看到那个版本很重要。我正在使用2.7版本并导入日期时间。
我不认为我将字符串日期设置回字符串,这是我认为人们在下面建议的内容。
由于
答案 0 :(得分:7)
当您收到<str> object has no attribute X
之类的错误时,这意味着您正在执行some_object.X
之类的操作。这也意味着some_object
是一个字符串。由于它没有该属性,因此通常意味着您假设some_object
是其他内容。
完整的错误消息将告诉您导致问题的行。在你的情况下,就是这样:
start_date_dt = datetime.datetime.strptime(start_date, fmt) AttributeError: 'str' object has no attribute 'datetime'
此处唯一访问datetime
的对象是第一个datetime
。这意味着第一个datetime
是一个字符串,并且您假设它代表一个模块。
如果要打印出datetime
(例如:print("datetime is:", datetime)
),我相信你会看到一个字符串。
这意味着你的代码中的其他地方通过将其设置为字符串来覆盖datetime
(例如:datetime = "some string"
)