How to work with dates and times
Get current date and time
date.today() returns the local calendar date. For globally comparable timestamps, use an aware UTC datetime.
from datetime import date, datetime, timezone
print(date.today())
now_utc = datetime.now(timezone.utc)
print(now_utc)
Create dates and calculate
timedelta represents a duration. Adding it to a date or datetime creates a new value because these objects are immutable.
from datetime import date, timedelta
deadline = date(2026, 10, 1)
reminder = deadline - timedelta(days=7)
days_left = deadline - date(2026, 9, 8)
print(reminder)
print(days_left.days)
Format for display
strftime() converts a date or datetime to formatted text. ISO format is a strong default for machine-readable data.
from datetime import datetime
moment = datetime(2026, 9, 8, 14, 30)
print(moment.strftime("%B %d, %Y at %H:%M"))
print(moment.isoformat())
Parse text
strptime() parses text according to an exact format and raises ValueError when the text does not match.
from datetime import datetime
text = "2026-09-08"
try:
parsed = datetime.strptime(text, "%Y-%m-%d").date()
print(parsed)
except ValueError:
print("Use YYYY-MM-DD")