pvdocs /Python/Módulo datetime

Módulo datetime

The datetime module provides classes for working with dates and times.

Core Classes

Class Description
date Year, month, day
time Hour, minute, second, microsecond
datetime Date + time combined
timedelta Duration between two points
timezone Fixed UTC offset

Creating Objects

from datetime import date, time, datetime, timedelta, timezone

today   = date.today()              # 2024-05-01
now     = datetime.now()            # 2024-05-01 14:30:00.123456
utc_now = datetime.now(timezone.utc)

specific = datetime(2024, 1, 15, 10, 30, 0)

timedelta — Arithmetic

from datetime import datetime, timedelta

deadline = datetime.now() + timedelta(days=7, hours=2)
diff     = deadline - datetime.now()  # timedelta object

print(diff.days)         # number of full days
print(diff.total_seconds())  # total seconds as float

Formatting and Parsing

dt = datetime(2024, 5, 1, 14, 30)

# datetime → string
dt.strftime("%Y-%m-%d %H:%M")       # '2024-05-01 14:30'
dt.strftime("%d/%m/%Y")             # '01/05/2024'
dt.isoformat()                      # '2024-05-01T14:30:00'

# string → datetime
datetime.strptime("2024-05-01", "%Y-%m-%d")
datetime.fromisoformat("2024-05-01T14:30:00")

Common strftime Codes

Code Meaning Example
%Y 4-digit year 2024
%m Month (01–12) 05
%d Day (01–31) 01
%H Hour 24h (00–23) 14
%M Minute 30
%S Second 00
%A Weekday name Wednesday

Timezone-aware vs Naive

from datetime import datetime, timezone, timedelta

# naive (no timezone info)
naive = datetime.now()

# aware (has timezone info)
aware = datetime.now(timezone.utc)

# custom offset (e.g. UTC-3)
br_tz = timezone(timedelta(hours=-3))
br_now = datetime.now(br_tz)

# Never compare naive and aware — raises TypeError

Key Interview Points