Last updated: Apr 8, 2024
Reading timeΒ·11 min

The error "AttributeError module 'datetime' has no attribute 'strptime'"
occurs when we try to call the strptime method directly on the datetime
module.
To solve the error, use the following import import datetime and call the
strptime method as datetime.datetime.strptime(...).

Here is an example of how the error occurs.
import datetime # βοΈ AttributeError: module 'datetime' has no attribute 'strptime' dt = datetime.strptime("21/11/22 09:30", "%d/%m/%y %H:%M") print(dt)
strftime", scroll down to the next subheading.The issue is that we are trying to call the strptime method directly on the
datetime module.
strptime method on the datetime class insteadTo solve the error, call the strptime method on the datetime class instead.
import datetime dt = datetime.datetime.strptime( "21/11/22 09:30", "%d/%m/%y %H:%M" ) print(dt) # ποΈ 2022-11-21 09:30:00

datetime.py as that would shadow the official datetime module.datetime class directlyAlternatively, you can change your import statement to import the datetime
class from the datetime module to not have to type datetime.datetime which
looks quite confusing.
from datetime import datetime dt = datetime.strptime("21/11/22 09:30", "%d/%m/%y %H:%M") print(dt) # ποΈ 2022-11-21 09:30:00

We imported the datetime class from the datetime module and called the strptime() method on the class.
It is quite confusing that there is a class named datetime in the datetime
module.
The following import statement imports the datetime class.
from datetime import datetime # ποΈ <class 'datetime.datetime'> print(datetime)
The following import statement imports the entire datetime module.
import datetime # ποΈ <module 'datetime' from '/home/borislav/anaconda3/lib/python3.9/datetime.py'> print(datetime) # ποΈ <class 'datetime.datetime'> print(datetime.datetime)
You can make your code a bit easier to read by using an alias in your import statement.
# ποΈ alias datetime class to dt from datetime import datetime as dt result = dt.strptime("21/11/22 09:30", "%d/%m/%y %H:%M") print(result) # ποΈ 2022-11-21 09:30:00

We aliased the datetime class to dt, so you would call the strptime method
as dt.strptime() instead of datetime.strptime().
The best way to start debugging is to call the dir() function passing it the
imported module.
import datetime """ [ 'MAXYEAR', 'MINYEAR', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo' ] """ print(dir(datetime))
If you pass a module object to the dir() function, it returns a list of names of the module's attributes.
We can see that the datetime module has no attribute named strptime, so it
must be an attribute in one of the module's classes.
We can also see that the datetime module has an attribute datetime, which is
what we used to successfully call the strptime() method.
If you import the datetime class from the datetime module and pass it to the
dir() function, you will see the strptime method in the list of attributes.
from datetime import datetime # ποΈ [... 'strptime', ...] print(dir(datetime))
If you got the error "AttributeError: partially initialized module 'datetime'
has no attribute 'strptime' (most likely due to a circular import)", there is a
file called datetime.py in your local codebase.
To solve the error, make sure to not use the names of built-in or remote
modules, e.g. datetime.py, for your local files.
The error "AttributeError module 'datetime' has no attribute 'strftime'"
occurs when we try to call the strftime method directly on the datetime
module.
To solve the error, create a datetime object and call the strftime method
on the object instead.

Here is an example of how the error occurs.
import datetime # βοΈ AttributeError: module 'datetime' has no attribute 'strftime' print(datetime.strftime("%d/%m/%y"))
The issue in the code sample is that we are trying to call the strftime method
directly on the datetime module.
To solve the error, we have to create a datetime object first and call the
strftime method on the object.
import datetime d = datetime.datetime(2022, 11, 24, 9, 30, 0) # ποΈ 24/11/22 print(d.strftime("%d/%m/%y")) # ποΈ οΈThursday, 24. November 2022 09:30AM print(d.strftime("%A, %d. %B %Y %I:%M%p")) # ποΈ Saturday, 14. May 2022 11:40AM d2 = datetime.datetime.now() # ποΈ current date print(d2.strftime("%A, %d. %B %Y %I:%M%p"))
datetime.py as that would shadow the official datetime module.We imported the datetime module and instantiated the datetime class.
The datetime class has a
strftime
method which we can use to get a string representation of the date and time,
controlled by an explicit format string.
It is quite confusing that the datetime module has a datetime class.
An alternative to chaining datetime.datetime, is to import the class from the
module.
from datetime import datetime d = datetime(2022, 11, 24, 9, 30, 0) # ποΈ 24/11/22 print(d.strftime("%d/%m/%y")) # ποΈ οΈThursday, 24. November 2022 09:30AM print(d.strftime("%A, %d. %B %Y %I:%M%p")) # ποΈ Saturday, 14. May 2022 11:40AM d2 = datetime.now() print(d2.strftime("%A, %d. %B %Y %I:%M%p"))
We imported the datetime class from the datetime module, so we don't have to
use datetime.datetime when instantiating the class.
You can also use an alias in your import statement.
from datetime import datetime as dt d = dt(2022, 11, 24, 9, 30, 0) # ποΈ 24/11/22 print(d.strftime("%d/%m/%y")) # ποΈ οΈThursday, 24. November 2022 09:30AM print(d.strftime("%A, %d. %B %Y %I:%M%p")) # ποΈ Saturday, 14. May 2022 11:40AM d2 = dt.now() print(d2.strftime("%A, %d. %B %Y %I:%M%p"))
We aliased the datetime class to dt, so we can access methods on the class
as dt.now() instead of datetime.now().
The best way to start debugging is to call the dir() function passing it the
imported module.
import datetime """ [ 'MAXYEAR', 'MINYEAR', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo' ] """ print(dir(datetime))
If you pass a module object to the dir() function, it returns a list of names of the module's attributes.
We can see that the datetime module has no attribute named strftime, so it
must be an attribute in one of the module's classes.
However, if we pass the datetime object to the dir() function, we can see
that it has an attribute strftime.
import datetime d = datetime.datetime(2022, 11, 24, 9, 30, 0) # [... 'strftime' ...] print(dir(d))
The dir() function is very useful when you need to look at what exactly you
are importing and which attributes are available on the imported module.
The error "AttributeError module 'datetime' has no attribute 'today'" occurs
when we try to call the today method directly on the datetime module.
To solve the error, use the following import import datetime and call the
today method as datetime.date.today().

Here is an example of how the error occurs.
import datetime # βοΈ AttributeError: module 'datetime' has no attribute 'today' print(datetime.today())
The issue in the code sample is that we are trying to call the today method
directly on the datetime module.
To solve the error, call the today method on the date class instead.
# ποΈ 2022-05-14 print(datetime.date.today()) # ποΈ 2022-05-14 13:45:57.409176 print(datetime.datetime.today())
When called on a date object, the today method returns the current local date.
When called on a
datetime
object, the
today
method returns the local datetime.
datetime.py as that would shadow the official datetime module.Alternatively, you can change your import statement to import the datetime
class from the datetime module to not have to type datetime.datetime which
looks quite confusing.
from datetime import datetime, date # ποΈ 2022-05-14 print(date.today()) # ποΈ 2022-05-14 13:45:57.409176 print(datetime.today())
We imported the
datetime
and date
classes from the datetime
module and called the today() method on the classes.
It is quite confusing that there is a class named datetime in the datetime
module.
You can make your code a bit easier to read by using an alias in your import statement.
from datetime import datetime as dt, date # ποΈ 2022-05-14 print(date.today()) # ποΈ 2022-05-14 13:45:57.409176 print(dt.today())
We aliased the datetime class to dt, so you would call the today method as
dt.today() instead of datetime.today().
The best way to start debugging is to call the dir() function passing it the
imported module.
import datetime """ [ 'MAXYEAR', 'MINYEAR', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo' ] """ print(dir(datetime))
If you pass a module object to the dir() function, it returns a list of names of the module's attributes.
We can see that the datetime module has no attribute named today, so it must
be an attribute in one of the module's classes.
We can also see that the datetime module has an attribute datetime, which is
what we used to successfully call the today() method.
If you import the datetime class from the datetime module and pass it to the
dir() function, you will see the today method in the list of attributes.
from datetime import datetime, date # ποΈ [... 'today' ...] print(dir(datetime)) # ποΈ [... 'today' ...] print(dir(date))
If you got the error "AttributeError: partially initialized module 'datetime'
has no attribute 'today' (most likely due to a circular import)", there is a
file called datetime.py in your local codebase.
To solve the error, make sure to not use the names of built-in or remote
modules, e.g. datetime.py, for your local files.
The error "AttributeError module 'datetime' has no attribute 'fromtimestamp'"
occurs when we call the fromtimestamp method on the datetime module.
To solve the error, use the following import import datetime and call the
method as datetime.datetime.fromtimestamp(...).

Here is an example of how the error occurs.
import time import datetime # βοΈ AttributeError: module 'datetime' has no attribute 'fromtimestamp' today = datetime.fromtimestamp(time.time()) print(today)
The issue in the code sample is that we are trying to call the
fromtimestamp method directly on
the datetime module.
To solve the error, call the fromtimestamp method on the datetime class
instead.
import time import datetime today = datetime.datetime.fromtimestamp(time.time()) # ποΈ 2022-05-14 13:16:59.426594 print(today)
datetime.py as that would shadow the official datetime module.Alternatively, you can change your import statement to import the datetime
class from the datetime module to not have to type datetime.datetime which
looks quite confusing.
import time from datetime import datetime today = datetime.fromtimestamp(time.time()) # ποΈ 2022-05-14 13:16:59.426594 print(today)
We imported the datetime class from the datetime module and called the fromtimestamp method on the class.
It is quite confusing that there is a class named datetime in the datetime
module.
You can make your code a bit easier to read by using an alias in your import statement.
import time from datetime import datetime as dt today = dt.fromtimestamp(time.time()) # ποΈ 2022-05-14 13:16:59.426594 print(today)
We aliased the datetime class to dt, so you would call the fromtimestamp
method as dt.fromtimestamp() instead of datetime.fromtimestamp().
You can also pass a tz keyword argument to the method, to convert the
timestamp to the specific time zone.
import time from datetime import datetime as dt, timezone today = dt.fromtimestamp(time.time(), tz=timezone.utc) # ποΈ 2022-05-14 10:21:52.540533+00:00 print(today)
The best way to start debugging is to call the dir() function passing it the
imported module.
import datetime """ [ 'MAXYEAR', 'MINYEAR', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo' ] """ print(dir(datetime))
If you pass a module object to the dir() function, it returns a list of names of the module's attributes.
We can see that the datetime module has no attribute named fromtimestamp, so
it must be an attribute in one of the module's classes.
We can also see that the datetime module has an attribute datetime, which is
what we used to successfully call the fromtimestamp() method.
If you import the datetime class from the datetime module and pass it to the
dir() function, you will see the fromtimestamp method in the list of
attributes.
from datetime import datetime # ποΈ [... 'fromtimestamp', ...] print(dir(datetime))
If you got the error "AttributeError: partially initialized module 'datetime'
has no attribute 'fromtimestamp' (most likely due to a circular import)", there
is a file called datetime.py in your local codebase.
To solve the error, make sure to not use the names of built-in or remote
modules, e.g. datetime.py, for your local files.
The error "AttributeError module 'datetime' has no attribute 'now'" occurs
when we try to call the now method directly on the datetime module.
To solve the error, use the following import import datetime and call the
now method as datetime.datetime.now().

Here is an example of how the error occurs.
import datetime # βοΈ AttributeError: module 'datetime' has no attribute 'now' print(datetime.now())
The issue in the code sample is that we are trying to call the now method
directly on the datetime module.
To solve the error, call the now method on the datetime class instead.
import datetime # ποΈ 2022-05-14 12:48:41.270852 print(datetime.datetime.now())
datetime.py as that would shadow the official datetime module.Alternatively, you can change your import statement to import the datetime
class from the datetime module to not have to type datetime.datetime which
looks quite confusing.
from datetime import datetime # ποΈ 2022-05-14 12:48:41.270852 print(datetime.now())
We imported the datetime class from the datetime module and called the now method on the class.
It is quite confusing that there is a class named datetime in the datetime
module.
You can get around this by using an alias in your import statement.
# ποΈ alias datetime class to dt from datetime import datetime as dt # ποΈ 2022-05-14 12:48:41.270852 print(dt.now())
We aliased the datetime class to dt, so you would call the now method as
dt.now() instead of datetime.now().
The best way to start debugging is to call the dir() function passing it the
imported module.
import datetime """ [ 'MAXYEAR', 'MINYEAR', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo' ] """ print(dir(datetime))
If you pass a module object to the dir() function, it returns a list of names of the module's attributes.
We can see that the datetime module has no attribute named now, so it must
be an attribute in one of the module's classes.
We can also see that the datetime module has an attribute datetime, which is
what we used to successfully call the now() method.
If you import the datetime class from the datetime module and pass it to the
dir() function, you will see the now method in the list of attributes.
from datetime import datetime # ποΈ [... 'now', ...] print(dir(datetime))
If you got the error "AttributeError: partially initialized module 'datetime'
has no attribute 'now' (most likely due to a circular import)", there is a file
called datetime.py in your local codebase.
To solve the error, make sure to not use the names of built-in or remote
modules, e.g. datetime.py, for your local files.