Продолжаем цикл статей по обработке даты и времени в 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