объект типа 'датавремя.datetime 'не имеет атрибута 'datetime'
Я следую учебник django, и я получил следующую ошибку:
объект типа 'типа datetime.datetime 'не имеет атрибута 'datetime'
в следующей строке:
date = datetime.datetime(int(year), int(month), 1)
кто-нибудь знает причину ошибки?
я импортировал datetime с from datetime import datetime если это поможет
спасибо
6 ответов:
Datetime-это модуль, который позволяет обрабатывать даты, времена и даты (все из которых являются типами данных). Это значит, что
datetimeявляется как модулем верхнего уровня, так и типом внутри этого модуля. Это сбивает с толку.ваша ошибка, вероятно, основана на запутанном именовании модуля, и то, что вы или модуль, который вы используете, уже импортировано.
>>> import datetime >>> datetime <module 'datetime' from '/usr/lib/python2.6/lib-dynload/datetime.so'> >>> datetime.datetime(2001,5,1) datetime.datetime(2001, 5, 1, 0, 0)но, если вы импортируете datetime.дата и время:
>>> from datetime import datetime >>> datetime <type 'datetime.datetime'> >>> datetime.datetime(2001,5,1) # You shouldn't expect this to work # as you imported the type, not the module Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: type object 'datetime.datetime' has no attribute 'datetime' >>> datetime(2001,5,1) datetime.datetime(2001, 5, 1, 0, 0)Я подозреваю, что вы или один из модули, которые вы используете, импортируются следующим образом:
from datetime import datetime.
для python 3.3
from datetime import datetime, timedelta futuredate = datetime.now() + timedelta(days=10)
вы должны использовать
date = datetime(int(year), int(month), 1)изменить
from datetime import datetimeдо
import datetime
вы действительно должны импортировать модуль в свои псевдоним.
import datetime as dt my_datetime = dt.datetime(year, month, day)вышеуказанное имеет следующие преимущества над другими решениями:
- вызов переменной
my_datetimeвместоdateуменьшает путаницу, так как уже естьdateв модуле datetime (datetime.date).- модуль и класс (как назвал
datetime) не тени друг друга.
если вы воспользовались:
from datetime import datetimeтогда просто напишите код как:
date = datetime(int(year), int(month), 1)но если вы воспользовались:
import datetimeтолько тогда вы можете написать:
date = datetime.datetime(int(2005), int(5), 1)
Я обнаружил, что это намного проще
from dateutil import relativedelta relativedelta.relativedelta(end_time,start_time).seconds
Comments