Для работы с датой и времен в Python предназначен модуль datetime. Этот модуль позволяет всячески манипулировать с временными величинами, что весьма полезно в скриптах, ориентированных на использование в реальном времени. С помощью этого модуля можно считать текущее время на устройстве, узнать разницу между разными моментами времени или, наоборот, прибавить к текущему времени некоторый временной отрезок и запустить счетчик на сайте с отсчетом до какого-нибудь события.
Одна из проблем, связанных с любыми датами и временем — это его формат. В Америке распространен формат MM-DD-YYYY: сначала идет месяц, потом день и в конце располагается год. Для русскоязычных стран более привычным является формат DD-MM-YYYY. Помимо них существуют иные записи даты и времени. Иногда в скриптах возникает необходимость считывать и выводить данные формата datetime, то есть дату. Чтобы сделать этот процесс более комфортным, разработчики придумали два метода для преобразования строк в формат datetime и обратно — strptime() и strftime().
В рамках этого материала мы разберем работу этих методов в Python и практику их применения.
Технологии здесь. А вы с нами?
безопасно и с гарантией результата.
Предоставим грант до 1 000 000 ₽ на облачную
инфраструктуру и возьмем на себя весь процесс.
Метод strptime()
Метод класса datetime strptime() принимает в качестве одного из аргументов строку и создает на основе её объект типа datetime. Метод имеет следующий синтаксис:
Где
string_date— это строка, на основе которой нужно создать объект типаdatetime;params— это коды форматы. Их мы рассмотрим в разделе "Список кодов формата". В целом, они передают методу информацию о том, какой формат имеет дата в строке: 10.11.2022, 11.10.2022 или 10 ноябрь 2022.
Для примера возьмем несколько случайных дат с разным форматом и создадим на их основе новые объекты.
Рассмотрим работу datetime.strptime в Python 3 на примерах:
Вывод:
Как видим, в строке дата может принимать различные форматы. Шаблон, по которому на основе этой строки будет создан новый объект, описывается с помощью кодов формата и пунктуационных знаков, соответствующих этой строке. Разберемся подробнее в принципе их работы.
В первой строке из примера дата имеет формат DD.MM.YYYY. Чтобы передать информацию об этом в метод мы используем следующие обозначения:
%d— день месяца в виде десятичного числа;%m— номер месяца;%Y— год с указанием века;
Между кодов мы используем те же пунктуационные разделители, что и в исходной строке.
Метод strftime()
Метод strftime() преобразует объект типа datetime в строку. Метод имеет следующий синтаксис:
Где
object— объект типаdatetime, который необходимо преобразовать в строку;params— форматы кода, на основании которых необходимо сформировать строку;
Рассмотрим несколько практических примеров, как это работает на практике:
Вывод:
Список кодов формата
В этом разделе размещено описание всех кодов формата.
%a
Сокращенная форма дня недели. Например, Пт или Fri для пятницы в русской и английской локализации.
Применение:
Вывод:
%A
Полная форма дня недели. Например, Пятница или Friday для пятницы в русской и английской локализации.
Применение:
Вывод:
%b
Сокращенная форма месяца. Например, Ноя и Nov для ноября в русской и английской локализации.
Применение:
Вывод:
%B
Полная форма месяца. Например, Ноябрь или November для ноября в русской и английской локализации.
Применение:
Вывод:
%c
Код следующего шаблона: (сокращенный день недели) (сокращенное название месяца) (день месяца) (часы:минуты:секунды) (год).
Применение:
Вывод:
%d
День месяца от 1 до 31.
Применение:
Вывод:
%H
Часы в 24-часовом формате от 0 до 23.
Применение:
Вывод:
%I
Часы в 12-часовом формате от 1 до 12.
Применение:
Вывод:
%j
Порядковый номер дня в году от 1 до 366.
Применение:
Вывод:
%m
Номер месяца от 1 до 12.
Применение:
Вывод:
%M
Минуты от 0 до 59.
Применение:
Вывод:
%p
Код используется вместе с 12-часовым форматом для обозначения времени до полудня и после.
Применение:
Вывод:
%S
Секунды от 00 до 59.
Применение:
Вывод:
%U
Порядковый номер недели в году от 0 до 52. Нулевая неделя начинается с воскресенья.
Применение:
Вывод:
%w
Порядковый номер дня недели. Воскресенье — 0, суббота — 6.
Применение:
Вывод:
%W
Порядковый номер недели в году. Нулевая неделя начинается с понедельника, а не с воскресенья, как в %U.
Применение:
Вывод:
%x
Дата в формате MM/DD/YY.
Применение:
Вывод:
%X
Время в формате HH:MM:SS.
Применение:
Вывод:
%y
Год без века от 00 до 99.
Применение:
%Y
Год с веком.
Применение:
Вывод:
%Z
Временная зона, при наличии.
%%
Код для знака "%" в дате:
Вывод:
Работа с локальными обозначениями
Для работы с локальными обозначениями, например Декабрь вместо December, можно использовать библиотеку locale:
Вывод:
При использовании этой библиотеки для русскоязычных обозначений важно помнить, что библиотека locale не обрабатывает склонения месяцев и дней. Любые названия должны быть в именительном падеже.
Облачные серверы по выгодным ценам
477 ₽/мес
657 ₽/мес
Заключение
В рамках этого материала мы рассмотрели работу методов strptime() и strftime() в Python. Это отличные инструменты для работы с датами и временем. Если вы хотите глубже изучить работу этих методов, то для своей исследовательской деятельности вы можете арендовать облачный сервер в timeweb.cloud.
