type object 'datetime.datetime' has no attribute 'datetime'

Question:

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

Asked By: Chris Frank

||

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.

Answered By: John Lyon

You should use

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

Or change

from datetime import datetime

to

import datetime
Answered By: waitingkuo

For python 3.3

from datetime import datetime, timedelta
futuredate = datetime.now() + timedelta(days=10)
Answered By: RouR

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)
Answered By: M. Paul

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_datetime instead of date reduces confusion since there is already a date in the datetime module (datetime.date).
  • The module and the class (both called datetime) do not shadow each other.
Answered By: Robino

I found this to be a lot easier

from dateutil import relativedelta
relativedelta.relativedelta(end_time,start_time).seconds
Answered By: Kamaldeep Singh
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)
Answered By: Jay Agrawal

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.

Answered By: Audrey Mengue
import time
import datetime
from datetime import date,timedelta

You must have imported datetime from datetime.

Answered By: ATHARVA HIWASE

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()
Answered By: Nastaran Sf

The Problem Is That You Are Using The Tag

from datetime

I had The Same Problem You Need To use It Like This Instead

import datetime
Answered By: NAANG360

delete one datetime from:

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

and you get this:

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

you already imported the first one with this:

from datetime import datetime

so its redundant.

Answered By: Carlost

You can simply run the below command.

import datetime

datetime.fromtimestamp(details.start_date).strftime("%Y-%m-%d %H:%M:%S")

Answered By: Mukesh Nayal
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.