What is the difference between Python functions datetime.now() and datetime.today()?

The datetime.now() and datetime.today() functions both return the current local date and time, but they differ in their parameters and precision capabilities.

Key Differences

The main difference is that datetime.now() accepts an optional timezone parameter (tz), while datetime.today() does not accept any parameters.

Function Parameters Timezone Support Precision
datetime.now() Optional tz Yes Higher precision possible
datetime.today() None No Standard precision

Using datetime.now()

The datetime.now() function can work with timezones and may provide higher precision ?

from datetime import datetime
import pytz

# Local time (same as datetime.today())
local_time = datetime.now()
print("Local time:", local_time)

# UTC time
utc_time = datetime.now(pytz.UTC)
print("UTC time:", utc_time)
Local time: 2024-01-15 14:30:25.123456
UTC time: 2024-01-15 09:30:25.123456+00:00

Using datetime.today()

The datetime.today() function only returns local time without timezone information ?

from datetime import datetime

# Local time only
today = datetime.today()
print("Today:", today)
print("Type:", type(today))
Today: 2024-01-15 14:30:25.123456
Type: <class 'datetime.datetime'>

Precision Comparison

According to the documentation, datetime.now() may supply more precision than datetime.today() on platforms that support the C gettimeofday() function ?

from datetime import datetime

now_time = datetime.now()
today_time = datetime.today()

print("datetime.now()  :", now_time)
print("datetime.today():", today_time)
print("Difference      :", abs((now_time - today_time).total_seconds()), "seconds")
datetime.now()  : 2024-01-15 14:30:25.123456
datetime.today(): 2024-01-15 14:30:25.123789
Difference      : 0.000333 seconds

When to Use Which

Use datetime.now():

  • When you need timezone−aware timestamps
  • When working with UTC or other timezones
  • When maximum precision is required

Use datetime.today():

  • For simple local time operations
  • When timezone information is not needed
  • For basic date/time logging

Conclusion

Use datetime.now() when you need timezone support or maximum precision. Use datetime.today() for simple local time operations without timezone considerations.

Updated on: 2026-03-24T19:34:42+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements