Форматирование и разбор
Используйте strftime и strptime
«Форматирование и разбор» — бесплатный урок Python Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.
Зачем форматировать и разбирать даты и время
Компьютеры хранят даты как объекты, а люди читают их как текст. Форматирование превращает объект даты и времени в строку, а разбор превращает строку обратно в объект даты и времени.
strftime= строка FROM времени (форматирование).strptime= строка PARSE времени (разбор).
from datetime import datetime
now = datetime(2026, 5, 30, 14, 5)
print(now)Ваш первый strftime
Вызовите .strftime(format) для объекта даты и времени. Коды формата начинаются с %: %Y — это год из 4 цифр, %m — месяц, а %d — день.
from datetime import datetime
d = datetime(2026, 5, 30)
print(d.strftime('%Y-%m-%d'))Форматирование времени
Коды времени: %H — час (00–23), %M — минута, а %S — секунда. Сочетайте их с обычным текстом как угодно.
from datetime import datetime
d = datetime(2026, 5, 30, 9, 7, 3)
print(d.strftime('%H:%M:%S'))Понятные человеку названия
Некоторые коды создают названия: %A — полное название дня недели, %B — полное название месяца, а %b — сокращённое название месяца.
from datetime import datetime
d = datetime(2026, 5, 30)
print(d.strftime('%A, %B %d, %Y'))12-часовой формат и AM/PM
Используйте %I для часа в 12-часовом формате и %p для AM или PM. Такой формат часто применяется в отображаемых пользователю данных.
from datetime import datetime
d = datetime(2026, 5, 30, 14, 30)
print(d.strftime('%I:%M %p'))Разбор с помощью strptime
datetime.strptime(text, format) считывает строку и превращает её в объект даты и времени. Формат должен в точности соответствовать тексту, код за кодом.
from datetime import datetime
text = '2026-05-30'
d = datetime.strptime(text, '%Y-%m-%d')
print(d)
print(type(d))Совместный разбор даты и времени
Добавьте к формату коды времени, чтобы разобрать полную отметку времени. Каждый разделитель (дефис, пробел или двоеточие) в тексте должен присутствовать и в шаблоне.
from datetime import datetime
text = '30/05/2026 14:05'
d = datetime.strptime(text, '%d/%m/%Y %H:%M')
print(d.year, d.hour, d.minute)Полный цикл: разбор, затем форматирование
Обычный рабочий процесс выглядит так: разобрать полученный текст, выполнить некоторую логику, а затем заново отформатировать его для вывода — даже в другом виде.
from datetime import datetime
raw = '2026-05-30'
d = datetime.strptime(raw, '%Y-%m-%d')
pretty = d.strftime('%B %d, %Y')
print(pretty)Сокращённый формат ISO
.isoformat() создаёт стандартную строку ISO 8601, а datetime.fromisoformat() считывает её обратно без кодов формата.
from datetime import datetime
d = datetime(2026, 5, 30, 14, 5)
s = d.isoformat()
print(s)
back = datetime.fromisoformat(s)
print(back == d)Обработка ошибок разбора
Если текст не соответствует формату, strptime вызывает исключение ValueError. Оборачивайте вызов в try/except, если входные данные могут быть некорректными.
from datetime import datetime
try:
datetime.strptime('not-a-date', '%Y-%m-%d')
except ValueError as e:
print('Could not parse:', e)День года и другие возможности
Дополнительные коды: %j — день года (001–366), а %w — день недели в виде числа (0 = воскресенье). Они удобны для отчётов.
from datetime import datetime
d = datetime(2026, 5, 30)
print('Day of year:', d.strftime('%j'))Быстрая проверка
У Вас есть строка '2026-05-30'. Какой вызов превращает её в объект datetime?
Повторение: форматирование и разбор
Запомните:
strftime(fmt)превращает объект даты и времени INTO строку.strptime(text, fmt)превращает строку INTO объект даты и времени.- Распространённые коды:
%Y %m %dдля дат,%H %M %Sдля времени,%A %Bдля названий. isoformat()иfromisoformat()автоматически работают со стандартом ISO.
from datetime import datetime
d = datetime.strptime('2026-05-30 14:05', '%Y-%m-%d %H:%M')
print(d.strftime('%A at %I:%M %p'))Часто задаваемые вопросы
Урок «Форматирование и разбор» бесплатный?
Да — полный текст урока «Форматирование и разбор» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.
Чему я научусь в уроке «Форматирование и разбор»?
Используйте strftime и strptime Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Форматирование и разбор»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- date, time, datetime
- Timedelta и арифметика
- Форматирование и разбор
- Часовые пояса с zoneinfo