Освоение Python strftime(): преобразование дат и времени в читаемые строки
Метод strftime() в Python
В этой статье вы научитесь преобразовывать объекты date, time и datetime в их строковые представления с помощью метода strftime(). Разберем подробные примеры и полную таблицу кодов форматирования.
Видео: Работа с датами и временем в Python
Метод strftime() возвращает строку, представляющую дату и время, используя объект date, time или datetime.
Пример 1: Преобразование 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)
При запуске программы вывод будет похож на:
Год: 2024 Месяц: 12 День: 24 Время: 04:59:31 Дата и время: 12/24/2024, 04:59:31
Здесь year, month, day, time и date_time — это строки, тогда как now — объект datetime.
Как работает strftime()?
В приведенной выше программе %Y, %m, %d и др. — это коды форматирования. Метод strftime() принимает один или несколько кодов форматирования в качестве аргумента и возвращает отформатированную строку на их основе.
- Мы импортировали класс
datetimeиз модуляdatetime. Это необходимо, потому что объект классаdatetimeимеет доступ к методуstrftime(). - Объект
datetime, содержащий текущую дату и время, сохранен в переменной now. - Метод
strftime()используется для создания отформатированных строк. - Строка, передаваемая в
strftime(), может содержать более одного кода форматирования.
Пример 2: Создание строки из временной метки (timestamp)
from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
print("Объект datetime:", date_time)
d = date_time.strftime("%m/%d/%Y, %H:%M:%S")
print("Вывод 2:", d)
d = date_time.strftime("%d %b, %Y")
print("Вывод 3:", d)
d = date_time.strftime("%d %B, %Y")
print("Вывод 4:", d)
d = date_time.strftime("%I%p")
print("Вывод 5:", d)
Результат выполнения:
Объект datetime: 2018-06-12 09:55:22 Вывод 2: 06/12/2018, 09:55:22 Вывод 3: 12 Jun, 2018 Вывод 4: 12 June, 2018 Вывод 5: 09AM
Полный список кодов форматирования
В таблице ниже приведены все директивы, которые можно передать методу strftime().
| Директива | Значение | Пример |
|---|---|---|
%a | Сокращенное название дня недели | Пн, Вт, ... |
%A | Полное название дня недели | Понедельник, Вторник, ... |
%w | День недели как десятичное число (0=воскресенье) | 0, 1, ..., 6 |
%d | День месяца с ведущим нулем | 01, 02, ..., 31 |
%-d | День месяца без ведущего нуля | 1, 2, ..., 30 |
%b | Сокращенное название месяца | Янв, Фев, ..., Дек |
%B | Полное название месяца | Январь, Февраль, ... |
%m | Месяц как число с ведущим нулем | 01, 02, ..., 12 |
%-m | Месяц как число без ведущего нуля | 1, 2, ..., 12 |
%y | Год без века (две цифры) с ведущим нулем | 00, 01, ..., 99 |
%-y | Год без века без ведущего нуля | 0, 1, ..., 99 |
%Y | Год с веком (четыре цифры) | 2013, 2024, ... |
%H | Час (24-часовой формат) с ведущим нулем | 00, 01, ..., 23 |
%-H | Час (24-часовой формат) без ведущего нуля | 0, 1, ..., 23 |
%I | Час (12-часовой формат) с ведущим нулем | 01, 02, ..., 12 |
%-I | Час (12-часовой формат) без ведущего нуля | 1, 2, ..., 12 |
%p | AM или PM в соответствии с локалью | AM, PM |
%M | Минуты с ведущим нулем | 00, 01, ..., 59 |
%-M | Минуты без ведущего нуля | 0, 1, ..., 59 |
%S | Секунды с ведущим нулем | 00, 01, ..., 59 |
%-S | Секунды без ведущего нуля | 0, 1, ..., 59 |
%f | Микросекунды (6 цифр с ведущими нулями) | 000000 - 999999 |
%z | Смещение UTC в формате +HHMM или -HHMM | +0300 |
%Z | Название часового пояса | MSK, UTC, ... |
%j | День года с ведущими нулями (3 цифры) | 001, 002, ..., 366 |
%-j | День года без ведущих нулей | 1, 2, ..., 366 |
%U | Номер недели года (воскресенье — первый день недели) | 00, 01, ..., 53 |
%W | Номер недели года (понедельник — первый день недели) | 00, 01, ..., 53 |
%c | Представление даты и времени для текущей локали | Вт 12 июн 09:55:22 2018 |
%x | Представление даты для текущей локали | 06/12/18 |
%X | Представление времени для текущей локали | 09:55:22 |
%% | Буквальный символ '%' | % |
Пример 3: Подходящее для локали представление даты и времени
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: Вт 12 июн 09:55:22 2018 Вывод 2: 06/12/18 Вывод 3: 09:55:22
Коды форматирования %c, %x и %X используются для представления даты и времени, соответствующего текущей локали.
Рекомендуем также изучить: Python strptime() — метод для создания объекта datetime из строки.
Python
- Ключевые слова и идентификаторы в Python: мастерство зарезервированных слов и соглашений об именовании
- Освоение типов данных в Python: практическое руководство
- Мастерство операторов Python: Полное руководство
- Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
- Словари в Python: создание, манипуляции и продвинутые техники
- Итераторы в Python: как они работают и как создать свои
- Замыкания в Python: как вложенные функции захватывают переменные
- Регулярные выражения в Python (модуль re) — практическое руководство
- Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам
- Освоение модуля time в Python: функции, структуры и практические примеры