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
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
.
Pour python 3.3
from datetime import datetime, timedelta
futuredate = datetime.now() + timedelta(days=10)
Tu devrais utiliser
date = datetime(int(year), int(month), 1)
Ou changer
from datetime import datetime
à
import datetime
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:
my_datetime
à la place de date
réduit la confusion, car il existe déjà un date
dans le module datetime (datetime.date
).datetime
) ne se suivent pas.J'ai trouvé que c'était beaucoup plus facile
from dateutil import relativedelta
relativedelta.relativedelta(end_time,start_time).seconds
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)