Продолжаем цикл статей по обработке даты и времени в Python. В этой статье мы научимся преобразовывать объекты date,time и datetime в строки на примерах.
Преобразование datetime в строку с помощью strftime()
Приведенная ниже программа преобразует datetime объект, который содержит текущую дату и время, в строковый формат.
from datetime import datetime
now = datetime.now() # Текущее время
year = now.strftime("%Y")
print("Год:", year)
month = now.strftime("%m")
print("Месяц:", month)
day = now.strftime("%d")
print("День:", day)
time = now.strftime("%H:%M:%S")
print("Время:", time)
date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
print("Дата и время:",date_time)
Логика работы strftime()?
В программе выше %Y,%m,%d являются кодами метода strftime(). Данный метод может принимать как один так и несколько кодов в качестве аргумента.
- Мы импортировали класс datetime из модуля datetime что бы получить доступ к методу strftime().

- В объекте DateTime текущая дата хранится в now()

- В метод strftime() передаем код

- Строка которую мы передаем в strftime() может содержать несколько кодов

Список кодов strftime()
| Директива | Значение | Пример |
| %a | Сокращенное название дня недели. | Вс.Пн.Вт |
| %A | Полное название дня недели. | Воскресенье, понедельник |
| %w | День недели в виде десятичного числа. | 0,1,2,3,4,5,6 |
| %d | День месяца в с добавлением нуля. | 01,02,03,....31 |
| %-d | День месяца в виде числа. | 1,2,3,4,5....31 |
| %b | Сокращенное название месяца. | Янв.Февр,Мар |
| %B | Полное название месяца. | Январь, февраль, Март |
| %m | Месяц в виде числа с нулевым заполнением. | 01,02,03...12 |
| %-m | Месяц в виде десятичного числа. | 1,2,3,...12 |
| %y | Год без столетия как десятичное число с нулевой подкладкой. | 01,02,03...99 |
| %-y | Год без столетия как десятичное число. | 1,2,3,...99 |
| %Y | Год с веком в виде десятичного числа. | 2010,2011,...2021 |
| %H | Час (24-часовые часы) с нулевым заполнением. | 00,01,02,...23 |
| %-H | Час (24-часовые часы) как десятичное число. | 1,2,3,...23 |
| %I | Час (12-часовые часы) с нулевым заполнением. | 01,02,03,...12 |
| %-I | Час (12-часовые часы) как десятичное число. | 1,2,3...12 |
| %p | AM/PM | |
| %M | Минута в виде числа с нулевым заполнением. | 00,01,02,...59 |
| %-M | Минута как десятичное число. | 1,2,3,...59 |
| %S | Секунды с нулевым заполнением | 00,01,02,...59 |
| %-S | Секунды как десятичное значение | 0,1,2,3...59 |
| %f | Микросекунда в виде десятичного числа, слева-ноль. | 000000-999999 |
| %z | Смещение UTC в виде +HHMM или -HHMM. | |
| %Z | Название часового пояса. | |
| %j | День года в виде десятичного числа, дополненного нулем. | 001,002,003,...366 |
| %-j | День года в виде десятичного числа. | 1,2,3,....366 |
| %U | Номер недели года (воскресенье как первый день недели). Все дни в новом году, предшествующие первому воскресенью, считаются неделей 0. | 00,01,02,..53 |
| %W | Номер недели года (понедельник как первый день недели). Все дни в новом году, предшествующие первому понедельнику, считаются неделей 0. | 00,01,02,..53 |
| %c | Соответствующее представление даты и времени локали. | Пн 30 сентября 07:06:05 2013 |
| %x | Соответствующее представление даты локали. | 09/30/13 |
| %X | Соответствующее представление времени локали. | 07:06:05 |
| %% | Буквальный символ"%". | % |
Рассмотрим пару примеров, применения кодов.
from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
d = date_time.strftime("%c")
print("Результат 1:", d)
d = date_time.strftime("%x")
print("Результат 2:", d)
d = date_time.strftime("%X")
print("Результат 3:", d)
Результат:
Результат 1: Tue Jun 12 09:55:22 2018
Результат 2: 06/12/18
Результат 3: 09:55:22



