About "AttributeError module ‘DateTime’ has no attribute ‘strptime’" in Python
The error “AttributeError module ‘DateTime’ has no attribute ‘strptime'” occurs when you call the strptime()
method on Python’s datetime
module – rather than the datetime
class inside it.
✋ Update: This post was originally published on my blog decodingweb.dev, where you can read the latest version for a 💯 user experience. ~reza
Here’s what it looks like:
Traceback (most recent call last):
File "", line 1, in
AttributeError: module 'datetime' has no attribute 'strptime'
If you get the above error, your code probably looks similar to this:
import datetime
date_string = '25 Dcember, 2022'
datetime_object = datetime.strptime(date_string, '%d %B, %Y')
The reason is strptime()
method isn't a function defined inside the datetime
module. It's a method implemented by a class named datetime
that happens to be inside the datetime
module.
If you're wondering what a module is in Python, here's a quick refresher:
Python lets you reuse functions, classes, etc., by defining them in a file you can import into any script (or module). This
.py
file is known as a Python module.
The datetime
module contains classes for manipulating dates and times. The datetime
module contains a class definition of the same name (datetime
), which implements the strptime()
method.
I know! It's like there was a city in Canada named Canada. Imagine sending a postcard there!
How to fix "AttributeError module 'DateTime' has no attribute 'strptime'"
You have two options to fix this attribute error:
Call the method on the class
datetime
import the class
datetime
directly
Call the method on the class datetime: One way to fix the error is to call the strptime()
method on the datetime.datetime
class - This way, you won't have to change your import statement.
import datetime
date_string = '25 December, 2022'
datetime_object = datetime.datetime.strptime(date_string, '%d %B, %Y')
print(datetime_object)
The expression datetime.datetime
refers to the datetime
class in the datetime
module.
Here's the output:
2022-12-25 00:00:00
Import the datetime class directly: If you prefer not to touch your code, you can edit your import
statement instead:
from datetime import datetime
date_string = '25 December, 2022'
datetime_object = datetime.strptime(date_string, '%d %B, %Y')
print(datetime_object)
print(type(datetime_object))
In the above code, we explicitly imported the datetime
class from the datetime
module. As a result, any datetime
instance points to the datetime
class.
By the way, always avoid naming a variable datetime
because it'll override the reference to the datetime
class. And you'll get a similar attribute error if you call the strptime()
method.
Alright, I think that does it! I hope you found this quick guide helpful.
Thanks for reading.
❤️ You might like: