Сегодня рассмотрим два метода strftime и strptime из стандартной библиотеки datetime в языке программирования Python.
Описание формата strftime
Кратко говоря, strftime преобразует объект date в строковую дату.
Это выглядит так: dateobject.strftime(format).
«Format» — это желаемый формат строки даты, который хочет получить пользователь. Формат строится с использованием кодов, приведенных ниже:
- %a — будний день сокращенно (Пн, Вт,…)
- %A — будний день полностью (Понедельник, Вторник,…)
- %w — будний день, как десятичное число (1, 2, 3,…)
- %d — день месяца в числах (01, 02, 03,…)
- %b — месяцы сокращенно (Янв, Фев,…)
- %B — название месяцев полностью (Январь, Февраль,…)
- %m — месяцы в числах (01, 02, 03,…)
- %y — года без века (19, 20, 21)
- %Y — года с веком (2019, 2020, 2021)
- %H — 24 часа в сутки (с 00 до 23)
- %I — 12 часов в сутки (с 01 до 12)
- %p — AM и PM (00-12 и 12-00)
- %M — минуты (от 00 до 59)
- %S — секунды (от 00 до 59)
- %f — миллисекунды (6 десятичных чисел)
Использование strftime
Давайте рассмотрим конкретный пример — преобразование текущего времени в строку даты:
import datetime from datetime import datetime now = datetime.now() print(now)
Вывод программы:
2021-03-07 23:24:11.192196
Давайте теперь преобразуем приведенный выше объект datetime в строку datetime:
now.strftime("%Y-%m-%d %H:%M:%S")
Вывод программы:
'2021-03-07 23:16:41'
Если вы хотите напечатать месяц в качестве сокращенного названия, замените %m на %b, как показано ниже:
now.strftime("%Y-%b-%d %H:%M:%S")
Вывод программы:
'2021-Mar-07 23:16:41'
И ещё один пример:
now.strftime("%Y/%b/%A %H:%M:%S")
Вывод программы:
'2021/Mar/Sunday 23:16:41'
Преобразование даты в strftime
Преобразование даты в строку очень похоже на преобразование datetime в строку.
Рассмотрим пример — преобразование текущего объекта даты в строку даты:
today = datetime.today() print(today)
Вывод программы:
2021-03-07 23:22:15.341074
Давайте преобразуем приведенный выше объект date в строку даты с помощью метода strftime:
today.strftime("%Y-%m-%d %H:%M:%S")
Вывод программы:
'2021-03-07 23:22:15'
Отображение миллисекунд
Чтобы получить строку даты с миллисекундами, используйте код формата %f в конце, как показано ниже:
today = datetime.today() today.strftime("%Y-%m-%d %H:%M:%S.%f")
Вывод программы:
'2021-03-07 23:23:50.851344'
Описание формата strptime
Strptime используется для преобразования строки в объект datetime. Тоесть обратное действие методу strftime. Это выглядит так: strptime(date_string, format).
Разберем пример: strptime(«9/23/20», «%d/%m/%y»). Формат «%d/%m/%y» представляет собой соответствующий формат «9/23/20». Результатом приведенной выше команды будет объект datetime.
Формат строится с использованием заранее определенных кодов. Есть много кодов на выбор. Наиболее важные из них были перечислены ранее (смотрите 1 пункт в содержании).
Использование метода strptime
Преобразуем строку даты в объект datetime:
import datetime datetime.datetime.strptime("09/23/2030 8:28","%m/%d/%Y %H:%M")
Вывод программы:
datetime.datetime(2030, 9, 23, 8, 28)
Заключение
На этом всё. Желаю удачи в программировании!
Здравствуйте, Егор!
Статья замечательная, спасибо за неё!
Пытаюсь научиться программировать, невзирая на свой зрелый возраст.
Предполагаю, что метод «strptime» должен понадобиться мне для решения ближайших намеченных задач преобразования частей строк вида «31 декабря 2010» в объекты datetime — («%d/%m/%Y»).
Наверное «декабря» и прочие неправильные или лишние буквы в названиях месяцев, тоже придётся обрабатывать до вида «декабрь»? Будет видно по мере реализации задачи.
С преобразованием времени (часы, минуты) вроде должно быть проще.
Надеюсь в Python 3.8 всё это будет работать.
Здравствуйте, Борис.
Я бы советовал вам, произвести небольшое сопоставление строчного именования месяца в численное.
Например:
«Январь», «Января» — 01,
«Февраль», «Февраля» — 02,
«Март», «Марта» — 03.
Для того, чтобы легче было преобразовать дату в формат datetime.