Typ Objekt 'datetime.datetime' hat kein Attribut 'datetime'


126

Ich habe folgenden Fehler erhalten:

Typ Objekt 'datetime.datetime' hat kein Attribut 'datetime'

In der folgenden Zeile:

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

Kennt jemand den Grund für den Fehler?

Ich habe datetime mit importiert, from datetime import datetimewenn das hilft

Vielen Dank

Antworten:


225

Datetime ist ein Modul, mit dem Datums-, Uhrzeit- und Datumsangaben (alle Datentypen) verarbeitet werden können. Dies bedeutet, dass dies datetimesowohl ein Modul der obersten Ebene als auch ein Typ innerhalb dieses Moduls ist. Das ist verwirrend.

Ihr Fehler basiert wahrscheinlich auf der verwirrenden Benennung des Moduls und darauf, was Sie oder ein von Ihnen verwendetes Modul bereits importiert haben.

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

Wenn Sie jedoch datetime.datetime importieren:

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

Ich vermute, Sie oder eines der von Ihnen verwendeten Module wurde folgendermaßen importiert : from datetime import datetime.


3
@jozzas tolle Antwort. Ich hatte ein Problem mit timedelta, das mit Ihrer Lösung gelöst wurde. Txs.
Luis Miguel

1
@Jean Dies ist der Fehler, dass datetime den Namen seines eigenen Moduls mit einem seiner Klassennamen und nicht mit dem von Python beschattet.
Robino

85

Für Python 3.3

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

12
+1. Ich denke, dies sollte die richtige Antwort sein, da sie import datetimefrom datetime import datetime
meines

14

Du solltest benutzen

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

Oder ändern

from datetime import datetime

zu

import datetime

11

Sie sollten das Modul wirklich in einen eigenen Alias importieren .

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

Das Obige hat gegenüber den anderen Lösungen die folgenden Vorteile:

  • Aufruf der Variablen my_datetime anstelle von dateVerwirrung verringert die Verwirrung, da datedas datetime-Modul ( datetime.date) bereits eine enthält .
  • Das Modul und die Klasse (beide aufgerufen datetime) beschatten sich nicht gegenseitig.

1

Wenn Sie verwendet haben:

from datetime import datetime

Dann schreiben Sie einfach den Code wie folgt:

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

Aber wenn Sie verwendet haben:

import datetime

dann kannst nur du schreiben:

date = datetime.datetime(int(2005), int(5), 1)

1

Ich fand das viel einfacher

from dateutil import relativedelta
relativedelta.relativedelta(end_time,start_time).seconds

1

Ich stoße auf den gleichen Fehler, vielleicht haben Sie das Modul bereits importiert, indem Sie nur verwenden, import datetimealso wechseln Sie form datetime import datetimezu nur import datetime. Es hat bei mir funktioniert, nachdem ich es wieder geändert habe.


-2
from datetime import datetime
import time
from calendar import timegm
d = datetime.utcnow()
d = d.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
utc_time = time.strptime(d,"%Y-%m-%dT%H:%M:%S.%fZ")
epoch_time = timegm(utc_time)

6
Vermeiden Sie nur Code-Antworten. Sie können Ihren Beitrag bearbeiten , um einige Erklärungen und Links zur Unterstützung Ihres Codes hinzuzufügen.
Tomerikoo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.