Datetime
Python · Reference cheat sheet
Datetime
Python · Reference cheat sheet
📋 Overview
datetime handles dates, times, timedeltas, and timezones. Prefer aware datetimes (tzinfo set) over naive ones. Use zoneinfo (3.9+) for IANA timezones.
🔧 Core concepts
| Type | Role |
|---|---|
date | Calendar date |
time | Time of day |
datetime | Date + time |
timedelta | Duration |
timezone.utc | Fixed UTC |
zoneinfo.ZoneInfo | IANA TZ |
isoformat / fromisoformat | ISO-8601 |
Arithmetic: datetime ± timedelta. Comparing naive vs aware raises TypeError.
💡 Examples
UTC now and ISO:
from datetime import datetime, timedelta, timezone
now = datetime.now(timezone.utc)
later = now + timedelta(hours=2)
print(now.isoformat())
print(datetime.fromisoformat("2024-07-10T12:00:00+00:00"))ZoneInfo:
from datetime import datetime
from zoneinfo import ZoneInfo
ny = ZoneInfo("America/New_York")
local = datetime(2024, 7, 10, 9, 0, tzinfo=ny)
utc = local.astimezone(ZoneInfo("UTC"))
print(local, utc)Parsing common formats:
from datetime import datetime
dt = datetime.strptime("10/07/2024 14:30", "%d/%m/%Y %H:%M")
print(dt.strftime("%Y-%m-%d"))Date math:
from datetime import date, timedelta
start = date(2024, 7, 10)
print(start + timedelta(days=7))
print((date.today() - start).days)⚠️ Pitfalls
- Naive
datetime.now()is ambiguous — preferdatetime.now(timezone.utc). utcnow()is deprecated in 3.12 — usenow(timezone.utc).- DST transitions: local arithmetic can skip/repeat hours — convert via UTC.
timestamp()on naive assumes local time — be explicit.- Don't store local times without offset in databases when possible.