0Pricing
Python Academy · Урок

Форматирование и разбор

Используйте 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 — локальная установка не требуется.

Все уроки этого курса

  1. date, time, datetime
  2. Timedelta и арифметика
  3. Форматирование и разбор
  4. Часовые пояса с zoneinfo
← Назад к Python Academy