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
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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.
Method 2
For python 3.3
from datetime import datetime, timedelta futuredate = datetime.now() + timedelta(days=10)
Method 3
You should use
date = datetime(int(year), int(month), 1)
Or change
from datetime import datetime
to
import datetime
Method 4
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.
Method 5
If you have used:
from datetime import datetime
Then simply write the code as:
date = datetime(int(year), int(month), 1)
But if you have used:
import datetime
then only you can write:
date = datetime.datetime(int(2005), int(5), 1)
Method 6
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.
Method 7
import time
import datetime
from datetime import date,timedelta
You must have imported datetime from datetime.
Method 8
I found this to be a lot easier
from dateutil import relativedelta relativedelta.relativedelta(end_time,start_time).seconds
Method 9
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()
Method 10
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)
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0