Модульні уроки (2/4)
datetime: дати та час
Модуль datetime надає класи для представлення дат і часу.
Три основні класи
date— лише дата (рік, місяць, число)time— лише час (година, хвилина, секунда, мікросекунда)datetime— дата + час разомtimedelta— тривалість (різниця між двома моментами)
from datetime import date, time, datetime, timedelta
date(2025, 1, 1) # datetime.date(2025, 1, 1)
time(14, 30, 0) # datetime.time(14, 30)
datetime(2025, 1, 1, 14, 30, 0) # datetime.datetime(2025, 1, 1, 14, 30)"Зараз": now та today
datetime.now() # current date + time
date.today() # current date onlyАрифметика з timedelta
from datetime import datetime, timedelta
ora = datetime(2025, 1, 1, 12, 0)
domani = ora + timedelta(days=1)
una_ora_fa = ora - timedelta(hours=1)
# difference between two datetimes -> timedelta
delta = domani - ora
delta.days # 1
delta.total_seconds() # 86400.0timedelta приймає days, seconds, microseconds, milliseconds,
minutes, hours, weeks (НЕ months або years, які є двозначними).
Форматування: strftime
Перетворює datetime → рядок відповідно до шаблону.
ora = datetime(2025, 1, 1, 14, 30)
ora.strftime("%Y-%m-%d") # '2025-01-01'
ora.strftime("%d/%m/%Y %H:%M") # '01/01/2025 14:30'
ora.strftime("%A %d %B %Y") # 'Wednesday 01 January 2025' (locale-dependent)Найчастіше використовувані директиви: %Y 4-значний рік, %m 2-значний місяць, %d 2-значний день,
%H 24 години, %M хвилин, %S секунд.
Розбір: strptime
Протилежне: рядок → дата-час, враховуючи очікуваний шаблон.
datetime.strptime("01/01/2025", "%d/%m/%Y")
# datetime.datetime(2025, 1, 1, 0, 0)ISO 8601
Для обміну даними завжди віддавайте перевагу формату ISO 8601 (YYYY-MM-DDTHH:MM:SS):
ora.isoformat() # '2025-01-01T14:30:00'
datetime.fromisoformat("2025-01-01T14:30:00")Часові пояси та відомості про дату та час
За замовчуванням об’єкти datetime в Python наївні (це означає, що вони не містять інформації про часовий пояс). Для реальних додатків найкраще усвідомлювати їх, встановивши інформацію про часовий пояс за допомогою datetime.timezone.utc або використовуючи модуль zoneinfo.
Спробуйте
Обчисліть дату через 30 днів після 1 січня 2025 року та відформатуйте її як «РРРР-ММ-ДД» у змінній `date_str`. Оцініть `date_str`.
Показати підказку
base + timedelta(дні=30), потім .strftime
Рішення доступне після 3 спроб
Повторна вправа
Враховуючи рядок `s = '15/03/2025'`, проаналізуйте його за допомогою strptime у змінну `d` (об'єкт datetime). Обчисліть цілий день тижня `d.weekday()` (0=Пн, 6=Нд).
Показати підказку
strptime із шаблоном італійського формату.
Рішення доступне після 3 спроб
Додатковий виклик
Import `date` from the `datetime` module. Calculate the difference in days between December 25, 2026 (`date(2026, 12, 25)`) and December 20, 2026 (`date(2026, 12, 20)`). Store the integer number of days (using the `.days` attribute of the delta) in `days_diff`. Finally, evaluate the variable.
Показати підказку
The difference between two dates returns a timedelta. Access the integer days with delta.days.
Рішення доступне після 3 спроб