How to Get the Current Date in Python
What you’ll build or solve
You’ll get today’s date in Python and format it for logs, filenames, and user-facing text.
When this approach works best
This approach works best when you:
Learn Python on Mimo
- Add today’s date to a report name like
report-2026-02-17.csv. - Log events with the current date, like “backup ran on 2026-02-17”.
- Compare dates, like checking if a subscription expires today.
Avoid using a date-only value when you need an exact moment in time. For timestamps, use datetime.now() and include the time and timezone.
Prerequisites
- Python installed
- You know what a variable is
Step-by-step instructions
1) Get today’s date as a date object
Use date.today() when you only need the date (year, month, day).
Python
from datetime import date
today = date.today()
print(today)
What to look for:
today is a date object, not a string. You can compare it to other date values and access parts like today.year.
2) Format the date for display or filenames
Use .isoformat() for a safe default (YYYY-MM-DD). Use strftime() when you need a custom format.
Python
from datetime import date
today = date.today()
print(today.isoformat()) # 2026-02-17
print(today.strftime("%d.%m.%Y")) # 17.02.2026
Option A: Build a filename-friendly date string
Python
from datetime import date
stamp = date.today().isoformat()
filename = f"backup-{stamp}.zip"
print(filename)
What to look for:
strftime() uses format codes like %Y (year), %m (month), %d (day). Keep the output free of / if you plan to use it in filenames.
3) Get the date in a specific timezone
Your computer’s local timezone controls what “today” means. If your code runs on a server in another region, set the timezone explicitly.
Python
from datetime import datetime
from zoneinfo import ZoneInfo
now_in_vienna = datetime.now(ZoneInfo("Europe/Vienna"))
today_in_vienna = now_in_vienna.date()
print(today_in_vienna)
What to look for:
zoneinfo is built into modern Python. If you get an import error, upgrade to Python 3.9+.
Examples you can copy
Example 1: Print today’s date and the weekday
Python
from datetime import date
today = date.today()
print(today)
print(today.strftime("%A")) # Tuesday, Wednesday, etc.
Example 2: Create a daily report filename
Python
from datetime import date
report_name = f"sales-{date.today().isoformat()}.csv"
print(report_name)
Example 3: Check if a deadline is today
Python
from datetime import date
deadline = date(2026, 2, 17)
if date.today() == deadline:
print("Deadline is today.")
else:
print("Not today.")
Example 4: Parse a date string and compare it to today
Python
from datetime import date
expires = date.fromisoformat("2026-03-01")
if expires < date.today():
print("Expired.")
else:
print("Active.")
Example 5: Display a date in a UI-friendly format
Python
from datetime import date
label = date.today().strftime("%b %d, %Y") # Feb 17, 2026
print(label)
Common mistakes and how to fix them
Mistake 1: Using datetime.now() when you only need the date
What you might do
Python
from datetime import datetime
today = datetime.now()
print(today)
Why it breaks
You get a full timestamp, not just the date. Comparisons to a date value will also fail unless you convert types.
Fix
Use date.today() or call .date() on a timezone-aware datetime.
Python
from datetime import date
today = date.today()
print(today)
Mistake 2: Confusing strftime() and strptime()
What you might do
Python
from datetime import date
# Trying to parse a string using strftime (wrong direction)
d = date.strftime("2026-02-17", "%Y-%m-%d")
Why it breaks
strftime() formats a date into a string. It does not parse strings.
Fix
Use date.fromisoformat() for YYYY-MM-DD, or datetime.strptime() for custom formats.
Python
from datetime import date, datetime
d1 = date.fromisoformat("2026-02-17")
d2 = datetime.strptime("17.02.2026", "%d.%m.%Y").date()
print(d1, d2)
Troubleshooting
If you see ImportError: cannot import name 'ZoneInfo', upgrade to Python 3.9+ or skip timezone support and use date.today() in local time.
If today’s date looks “wrong” on a server, the server's timezone may differ. Use datetime.now(ZoneInfo("Your/Timezone")).date().
If your formatted date includes slashes, avoid them for filenames. Use - or _ in strftime(), like %Y-%m-%d.
If parsing fails with ValueError, your input string does not match the expected format. Print the raw string and confirm the pattern you want to parse.
Quick recap
- Use
date.today()to get the current date as adateobject. - Use
.isoformat()forYYYY-MM-DD, orstrftime()for custom formats. - Use
ZoneInfowithdatetime.now(...)when timezone matters. - Use
date.fromisoformat(...)ordatetime.strptime(...)to parse date strings.
Join 35M+ people learning for free on Mimo
4.8 out of 5 across 1M+ reviews
Check us out on Apple AppStore, Google Play Store, and Trustpilot