>>> from datetime import datetimeНо мало кто знает, что тоже самое можно сделать и другим способом:
>>>
>>> dt = datetime.now()
>>> dt.strftime('%Y.%m.%d %H:%I')
'2020.01.08 12:00'
>>> "{:%Y.%m.%d %H:%I}".format(dt)
'2020.01.08 12:00'
Если паттерн хранится отдельно, то можно записать так>>> date_frmt = '%Y.%m.%d %H:%I'Хм, а чем это лучше, спросите вы?
>>> '{:{}}'.format(dt, date_frmt)
'2020.01.08 12:00'
1. Удобно писать более комплексные шаблоны
>>> event_name = 'Python-вебинар'(ну да, такие паттерны можно писать и в strftime, если что. Хотя, можете напороться на UnicodeEncodeError даже в Python3!)
>>> "Сегодня, {:%Y.%m.%d}, ровно в {:%H:%I} мы начинаем {}!".format(dt, dt, event_name)
'Сегодня, 2020.01.08, ровно в 12:00 мы начинаем Python-вебинар!'
Чтобы не повторять аргумент dt делаем форматирование по индексу
"{0:%Y} {0:%H.%I}".format(dt)Если используем разные даты, то можно сделать форматирование по имени
"{date1:%Y}-{date2:%Y} (current {date1:%Y})".format(date1=dt1, date2=dt2)
2. Форматирование даты находится непосредственно в тексте а не в отдельной переменной, что бывает удобней в некоторых случаях. Например, если текст хранится в базе данных то не нужно гдето отдельно хранить формат дат.3. Зная про эту фишку, и что реализуется она с помощью magic-метода
__format__можно начать писать свои классы с подобным функционалом! Собственно, в классе datetime этот метод просто вызывает уже знакомый метод strftime.
Я набросал простой пример с таким поведением, смотрим в гистах 🔗.