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")