Python:AttributeError:' str'对象没有属性' datetime'

时间:2016-03-11 15:15:40

标签: python strptime

我正在使用此代码:

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版本并导入日期时间。

我不认为我将字符串日期设置回字符串,这是我认为人们在下面建议的内容。

由于

1 个答案:

答案 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"