AttributeError: 'datetime' module has no attribute 'strptime'

Question:

Here is my Transaction class:

class Transaction(object):
    def __init__(self, company, num, price, date, is_buy):
        self.company = company
        self.num = num
        self.price = price
        self.date = datetime.strptime(date, "%Y-%m-%d")
        self.is_buy = is_buy

And when I’m trying to run the date function:

tr = Transaction('AAPL', 600, '2013-10-25')
print tr.date

I’m getting the following error:

   self.date = datetime.strptime(self.d, "%Y-%m-%d")
 AttributeError: 'module' object has no attribute 'strptime'

How can I fix that?

Asked By: Michael

||

Answers:

Use the correct call: strptime is a classmethod of the datetime.datetime class, it’s not a function in the datetime module.

self.date = datetime.datetime.strptime(self.d, "%Y-%m-%d")

As mentioned by Jon Clements in the comments, some people do from datetime import datetime, which would bind the datetime name to the datetime class, and make your initial code work.

To identify which case you’re facing (in the future), look at your import statements

  • import datetime: that’s the module (that’s what you have right now).
  • from datetime import datetime: that’s the class.
Answered By: Thomas Orozco

If I had to guess, you did this:

import datetime

at the top of your code. This means that you have to do this:

datetime.datetime.strptime(date, "%Y-%m-%d")

to access the strptime method. Or, you could change the import statement to this:

from datetime import datetime

and access it as you are.

The people who made the datetime module also named their class datetime:

#module  class    method
datetime.datetime.strptime(date, "%Y-%m-%d")
Answered By: user2555451

I got the same problem and it is not the solution that you told. So I changed the “from datetime import datetime” to “import datetime”. After that with
the help of “datetime.datetime” I can get the whole modules correctly. I guess this is the correct answer to that question.

Answered By: Kursad

Values ​​may differ depending on usage.

import datetime
date = datetime.datetime.now()
date.strftime('%Y-%m-%d') # date variable type is datetime

The value of the date variable must be a string::

date = '2021-09-06'
datetime.datetime.strptime(date, "%Y-%m-%d")
str(datetime.datetime.strptime(date, "%Y-%m-%d")) # show differently
Answered By: Ayse

The solutions mentioned by the others are correct. But for me, it was a problem with another library importing datetime module for me and overriding the datetime class I was importing.
an example with tsai library:

from datetime import datetime
from tsai.all import *

This will give you the error: 'module' object has no attribute 'strptime'.

In this case, just flip the order of imports or just don’t import everything (even if the documentation does that) :

from tsai.all import *
from datetime import datetime
Answered By: bibs2091
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.