web-dev-qa-db-fra.com

l'objet type 'datetime.datetime' n'a pas d'attribut 'datetime'

Je suis un tutoriel Django, et j'ai l'erreur suivante:

l'objet type 'datetime.datetime' n'a pas d'attribut 'datetime'

Sur la ligne suivante:

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

Est-ce que quelqu'un sait la raison de l'erreur?

J'ai importé datetime avec from datetime import datetime si cela aide

Merci

95
Chris Frank

Datetime est un module permettant de gérer des dates, des heures et des dates (qui sont tous des types de données). Cela signifie que datetime est à la fois un module de niveau supérieur et un type dans ce module. Ceci est déroutant.

Votre erreur est probablement basée sur les noms confus du module et sur ce que vous ou un module que vous utilisez avez déjà importé.

>>> 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)

Mais si vous importez datetime.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)

Je suppose que vous ou l'un des modules que vous utilisez a importé comme ceci: from datetime import datetime.

172
jozzas

Pour python 3.3

from datetime import datetime, timedelta
futuredate = datetime.now() + timedelta(days=10)
64
RouR

Tu devrais utiliser

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

Ou changer

from datetime import datetime

à

import datetime
9
waitingkuo

Vous devriez vraiment importer le module dans son propre alias.

import datetime as dt
my_datetime = dt.datetime(year, month, day)

Ce qui précède présente les avantages suivants par rapport aux autres solutions:

  • L'appel de la variable my_datetime à la place de date réduit la confusion, car il existe déjà un date dans le module datetime (datetime.date).
  • Le module et la classe (tous deux appelés datetime) ne se suivent pas.
6
Robino

J'ai trouvé que c'était beaucoup plus facile

from dateutil import relativedelta
relativedelta.relativedelta(end_time,start_time).seconds
0
Kamaldeep Singh

Si vous avez utilisé:

from datetime import datetime

Ensuite, écrivez simplement le code comme suit:

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

Mais si vous avez utilisé:

import datetime

alors seulement vous pourrez écrire:

date = datetime.datetime(int(2005), int(5), 1)
0
M. Paul