type object 'datetime.datetime' has no attribute 'datetime'
Emily Wong
I have gotten the following error:
type object 'datetime.datetime' has no attribute 'datetime'
On the following line:
date = datetime.datetime(int(year), int(month), 1)Does anybody know the reason for the error?
I imported datetime with from datetime import datetime if that helps
Thanks
10 Answers
Datetime is a module that allows for handling of dates, times and datetimes (all of which are datatypes). This means that datetime is both a top-level module as well as being a type within that module. This is confusing.
Your error is probably based on the confusing naming of the module, and what either you or a module you're using has already imported.
>>> 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)But, if you import 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)I suspect you or one of the modules you're using has imported like this: from datetime import datetime.
For python 3.3
from datetime import datetime, timedelta
futuredate = datetime.now() + timedelta(days=10) 3 You should use
date = datetime(int(year), int(month), 1)Or change
from datetime import datetimeto
import datetime 0 You should really import the module into its own alias.
import datetime as dt
my_datetime = dt.datetime(year, month, day)The above has the following benefits over the other solutions:
- Calling the variable
my_datetimeinstead ofdatereduces confusion since there is already adatein the datetime module (datetime.date). - The module and the class (both called
datetime) do not shadow each other.
If you have used:
from datetime import datetimeThen simply write the code as:
date = datetime(int(year), int(month), 1)But if you have used:
import datetimethen only you can write:
date = datetime.datetime(int(2005), int(5), 1) I run into the same error maybe you have already imported the module by using only import datetime so change from datetime import datetime to only import datetime. It worked for me after I changed it back.
import time
import datetime
from datetime import date,timedeltaYou must have imported datetime from datetime.
I found this to be a lot easier
from dateutil import relativedelta
relativedelta.relativedelta(end_time,start_time).seconds 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) 1 Avoid to write:
from datetime import datetime
datetime.datetime.function()Solution No. 1:
import datetime
datetime.datetime.function()Solution No. 2:
from datetime import datetime
datetime.function()