Дата и время
datetime — основные типы
from datetime import datetime, date, time, timedelta # импорт модуля
# Текущие дата/время
now = datetime.now() # 2026-06-17 14:30:00.123456
today = date.today() # 2026-06-17
current_time = datetime.now().time() # 14:30:00.123456
# Создание вручную
dt = datetime(2026, 6, 17, 14, 30, 0) # присваивание
d = date(2026, 6, 17) # присваивание
t = time(14, 30, 0) # присваивание
Форматирование и парсинг
# datetime → строка (strftime)
now = datetime.now() # присваивание
now.strftime("%Y-%m-%d") # 2026-06-17
now.strftime("%d.%m.%Y %H:%M") # 17.06.2026 14:30
now.strftime("%A, %d %B %Y") # Wednesday, 17 June 2026
now.strftime("%Y-%m-%dT%H:%M:%S") # 2026-06-17T14:30:00 (ISO)
# Строка → datetime (strptime)
dt = datetime.strptime("2026-06-17", "%Y-%m-%d") # парсинг строки в дату
dt = datetime.fromisoformat("2026-06-17T14:30:00") # 3.7+
Коды форматирования
| Код | Значение | Пример |
| %Y | Год (4 цифры) | 2026 |
| %m | Месяц (01–12) | 06 |
| %d | День (01–31) | 17 |
| %H | Часы (00–23) | 14 |
| %M | Минуты (00–59) | 30 |
| %S | Секунды (00–59) | 00 |
| %A | День недели (полный) | Wednesday |
| %B | Месяц (полный) | June |
timedelta — разница во времени
from datetime import timedelta # импорт модуля времени
delta = timedelta(days=7, hours=3) # присваивание
print(delta) # 7 days, 3:00:00
# Арифметика
now = datetime.now() # присваивание
next_week = now + timedelta(weeks=1) # присваивание
yesterday = now - timedelta(days=1) # присваивание
deadline = now + timedelta(hours=24) # присваивание
# Между датами
start = datetime(2026, 1, 1) # присваивание
end = datetime(2026, 12, 31) # присваивание
diff = end - start # timedelta(days=363)
diff.days # 363
diff.total_seconds() # 31363200.0
timezone — часовые пояса
from datetime import timezone, timedelta # импорт модуля времени
# UTC
utc_now = datetime.now(timezone.utc) # присваивание
# Смещение
msk = timezone(timedelta(hours=3)) # присваивание
moscow_now = datetime.now(msk) # присваивание
# pip install pytz — для полной поддержки поясов
import pytz # импорт модуля
tz = pytz.timezone("Europe/Moscow") # присваивание
moscow = datetime.now(tz) # присваивание
time — низкоуровневое время
import time # импорт модуля времени
# Таймер
start = time.time() # метка времени в секундах
# ... код ...
elapsed = time.time() - start # метка времени в секундах
print(f"{elapsed:.3f}s") # вывод в консоль
# Ожидание
time.sleep(2) # 2 секунды
# Структурированное время
time.localtime() # time.struct_time
time.strftime("%Y-%m-%d", time.localtime()) # форматирование даты в строку