datetime.now() Explained
datetime.now() gives you the current local date and time in Python.
Beginners often use it when they want to:
- record the current time
- print today’s date
- create timestamps
- work with dates and times in programs
It is important to know that datetime.now() returns a datetime object, not a plain string. That means you can access parts of it like the year, month, day, or hour.
from datetime import datetime
now = datetime.now()
print(now)
print(now.year)
print(now.month)
print(now.day)
Use this when you want the current local date and time as a datetime object.
What datetime.now() does
datetime.now():
- returns the current local date and time
- belongs to the
datetimeclass in thedatetimemodule - returns a
datetimeobject - is useful when you need the current timestamp in your program
A common beginner mistake is thinking it returns text. It does not. It returns an object with useful attributes and methods.
If you want a broader introduction to working with dates and times, see the Python datetime module overview.
Importing datetime.now() correctly
The most common beginner import is:
from datetime import datetime
Then you call:
datetime.now()
Example
from datetime import datetime
now = datetime.now()
print(now)
You can also import the whole module:
import datetime
now = datetime.datetime.now()
print(now)
This version works too, but it is longer.
Why beginners get confused
If you write this:
import datetime
print(datetime.now())
you will get an error, because datetime here is the module, not the class.
You need:
import datetime
print(datetime.datetime.now())
If you run into this kind of problem, see AttributeError: module has no attribute fix.
What the returned object contains
The object returned by datetime.now() includes:
- year
- month
- day
- hour
- minute
- second
- microsecond
You can access these parts with attributes.
Example
from datetime import datetime
now = datetime.now()
print(now.year)
print(now.month)
print(now.day)
print(now.hour)
print(now.minute)
print(now.second)
You can also check its type:
from datetime import datetime
now = datetime.now()
print(type(now))
Expected output will look like:
<class 'datetime.datetime'>
If you want to understand type() better, see Python type() function explained.
Basic example
Here is a simple example that gets the current date and time, prints it, and accesses one part of it.
from datetime import datetime
now = datetime.now()
print("Full value:", now)
print("Year:", now.year)
print("Hour:", now.hour)
Example output:
Full value: 2026-04-22 14:35:10.123456
Year: 2026
Hour: 14
The exact output will be different on your computer because it uses your current local time.
Getting only the date or only the time
Sometimes the full datetime value is more than you need.
You can use:
.date()to get only the date.time()to get only the time
Example
from datetime import datetime
now = datetime.now()
print("Full datetime:", now)
print("Date only:", now.date())
print("Time only:", now.time())
Example output:
Full datetime: 2026-04-22 14:35:10.123456
Date only: 2026-04-22
Time only: 14:35:10.123456
This can make your code clearer when you only need one part.
Formatting the result for display
If you use print(now), Python uses the default datetime format.
If you want a custom format, use strftime().
Example: year-month-day
from datetime import datetime
now = datetime.now()
print(now.strftime("%Y-%m-%d"))
Example output:
2026-04-22
Example: hour:minute:second
from datetime import datetime
now = datetime.now()
print(now.strftime("%H:%M:%S"))
Example output:
14:35:10
This is useful when you want a cleaner, human-readable string.
To learn more, see datetime.strftime() explained. If you later need to turn a string back into a datetime value, see datetime.strptime() explained.
Timezone note for beginners
datetime.now() gives local time by default.
For beginner use, that is often enough.
A few important points:
- it uses the current local time on your system
- basic use does not automatically include timezone information
- two computers in different places may return different times
If you want to learn more about the bigger picture, start with the Python datetime module overview.
Common errors and confusion
Here are some common mistakes beginners make with datetime.now().
Using the wrong import style
This fails:
import datetime
print(datetime.now())
This works:
import datetime
print(datetime.datetime.now())
Or use:
from datetime import datetime
print(datetime.now())
Forgetting the parentheses
This:
from datetime import datetime
print(datetime.now)
does not call the function. It gives you the method itself.
Use:
from datetime import datetime
print(datetime.now())
Expecting a string
This returns a datetime object:
from datetime import datetime
now = datetime.now()
print(type(now))
If you need a string, use:
from datetime import datetime
now = datetime.now()
print(str(now))
print(now.strftime("%Y-%m-%d %H:%M:%S"))
Treating the module and class as the same thing
This is very common:
datetimemoduledatetimeclass inside that module
That is why these two import styles behave differently:
from datetime import datetime
and
import datetime
Quick checks you can run
If something is not working, try these commands:
python --version
python
from datetime import datetime
print(datetime.now())
import datetime; print(datetime.datetime.now())
type(datetime.now())
Common causes include:
- imported the module with
import datetimebut calleddatetime.now()instead ofdatetime.datetime.now() - forgot parentheses and wrote
datetime.nowinstead ofdatetime.now() - expected a string, but got a
datetimeobject - tried to format the value without using
strftime() - mixed up local time with timezone-aware time
FAQ
What does datetime.now() return?
It returns a datetime object with the current local date and time.
Why does datetime.now() not work after import datetime?
Because datetime is then the module name. You need datetime.datetime.now().
How do I print only the date?
Call .date() on the result, or use strftime() for a custom format.
How do I convert datetime.now() to a string?
Use str() for the default format or strftime() for a custom format.
Is datetime.now() the same on every computer?
No. It uses the current local time on that system.