объект типа 'датавремя.datetime 'не имеет атрибута 'datetime'



Я следую учебник django, и я получил следующую ошибку:




объект типа 'типа datetime.datetime 'не имеет атрибута 'datetime'




в следующей строке:



date = datetime.datetime(int(year), int(month), 1)


кто-нибудь знает причину ошибки?



я импортировал datetime с from datetime import datetime если это поможет



спасибо

2003   6  

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

    Ничего не найдено.