Документация по Python. Теоретические материалы, и практические задачи

python strptime

Продолжаем цикл статей по управлению датой и временем. На прошлых уроках, мы прошли вводный курс по модулю DateTime, и методу strftime. Сегодня разберем на примерах, как создать объект DateTime из строки.

Метод для создания объекта из строки strptime(). Важно понимать, что мы не можем создавать объект DateTime из любой строки, строка должна иметь определенный формат.

Пример 1. Объект string для DateTime

                    
from datetime import datetime

date_s = "11 June, 2021"

print("date_s =", date_s)
print("Тип date_s =", type(date_s))

date_object = datetime.strptime(date_s, "%d %B, %Y")

print("date_object =", date_object)
print("Тип date_object =", type(date_object))

Результат:

date_s = 11 June, 2021
type of date_s = <class 'str'>
date_object = 2021-06-11 00:00:00
type of date_object = <class 'datetime.datetime'>

Как устроена работа strptime?

Функция strptime принимает два аргумента:

  • Строка (которая в итоге преобразуется в дату и время)
  • Код формата (все коды формата описаны ниже)

Основываясь на этих двух аргументах, при их правильном формате, метод вернет нам объект DateTime.  Разберем визуализацию выше приведенного примера.

  • %d — День месяца (01,02,….31)
  • %B — Название месяца (Январь, Февраль….Декабрь)
  • %Y -Год из четырех цифр (2018,2019,…2021)

Пример 2. Объект string DateTime

                    
from datetime import datetime

dt_s = "12/11/2020 09:15:32"

# Считываем дату в формате dd/mm/yyyy format
dt_object1 = datetime.strptime(dt_s, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)

# Считываем дату в формате mm/dd/yyyy format
dt_object2 = datetime.strptime(dt_s, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)

Результат:
dt_object1 = 2018-11-12 09:15:32
dt_object2 = 2018-12-11 09:15:32

Список кодов strptime()

ДирективаЗначениеПример
%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
%pAM/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
%%Буквальный символ"%". %

ValueError в strptime()

Мы с вами уже определились, что строка передаваемая в качестве аргумента, должна иметь определенный формат. В случае если переданные аргументы в strptime() некорректны, то мы получим ошибку ValueError. Наример:

                    
from datetime import datetime

date_s = "12/11/2018"
date_object = datetime.strptime(date_s, "%d %m %Y")

print("date_object =", date_object)

Результат:
ValueError: time data '12/11/2018' does not match format '%d %m %Y'

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *