В этой статье вы научитесь создавать объект datetime из строки (с помощью примеров).
strptime()
Метод создает объект типа DateTime из заданной строки.
Примечание: вы не можете создать datetime
объект из каждой строки. Строка должна быть в определенном формате.
Пример 1: строка для объекта datetime
from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) print("type of date_string =", type(date_string)) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object =", date_object) print("type of date_object =", type(date_object))
Когда вы запустите программу, вывод будет:
date_string = 21 июня 2018 года тип date_string = date_object = 2018-06-21 00:00:00 тип date_object =
Как работает strptime ()?
Метод strptime()
класса принимает два аргумента:
- строка (которая будет преобразована в дату и время)
- код формата
На основе используемой строки и кода формата метод возвращает эквивалентный datetime
объект.
В приведенном выше примере:
Вот,
%d
- представляет день месяца. Пример: 01, 02,…, 31%B
- Название месяца полностью. Пример: январь, февраль и т. Д.%Y
- Год в четырехзначном формате. Пример: 2018, 2019 и т. Д.
Пример 2: строка для объекта datetime
from datetime import datetime dt_string = "12/11/2018 09:15:32" # Considering date is in dd/mm/yyyy format dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S") print("dt_object1 =", dt_object1) # Considering date is in mm/dd/yyyy format dt_object2 = datetime.strptime(dt_string, "%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
Список кодов форматов
В таблице ниже показаны все коды формата, которые вы можете использовать.
Директива | Смысл | пример |
%a | Сокращенное название дня недели. | Вс, пн,… |
%A | Полное название дня недели. | Воскресение понедельник,… |
%w | День недели в виде десятичного числа. | 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, 2019 и т. Д. |
%H | Час (в 24-часовом формате) как десятичное число с нулями. | 00, 01,…, 23 |
%-H | Час (24-часовой формат) в виде десятичного числа. | 0, 1,…, 23 |
%I | Час (12-часовой формат) как десятичное число с нулями. | 01, 02,…, 12 |
%-I | Час (12-часовой формат) в виде десятичного числа. | 1, 2,… 12 |
%p | Локаль AM или PM. | ДО ПОЛУДНЯ ПОСЛЕ ПОЛУДНЯ |
%M | Минута в виде десятичного числа с нулями. | 00, 01,…, 59 |
%-M | Минута как десятичное число. | 0, 1,…, 59 |
%S | Второй - десятичное число с нулями. | 00, 01,…, 59 |
%-S | Секунда как десятичное число. | 0, 1,…, 59 |
%f | Микросекунда в виде десятичного числа с нулями слева. | 000000–999999 |
%z | Смещение UTC в форме + ЧЧММ или -ЧЧММ. | |
%Z | Название часового пояса. | |
%j | День года в виде десятичного числа с нулями. | 001, 002,…, 366 |
%-j | День года в виде десятичного числа. | 1, 2,…, 366 |
%U | Номер недели в году (воскресенье как первый день недели). Все дни нового года, предшествующие первому воскресенью, считаются нулевой неделей. | 00, 01,…, 53 |
%W | Номер недели в году (понедельник как первый день недели). Все дни нового года, предшествующие первому понедельнику, считаются нулевой неделей. | 00, 01,…, 53 |
%c | Соответствующее представление даты и времени языкового стандарта. | 30 сен, пн, 07:06:05 2013 |
%x | Соответствующее представление даты языкового стандарта. | 30.09.13 |
%X | Соответствующее представление времени локали. | 07:06:05 |
%% | Буквальный символ "%". | % |
ValueError в strptime ()
Если строка (первый аргумент) и код формата (второй аргумент), переданные в strptime()
, не совпадают, вы получите ValueError
. Например:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object)
Если вы запустите эту программу, вы получите ошибку.
ValueError: данные времени '12/11/2018' не соответствуют формату '% d% m% Y'
Рекомендуемая литература: Python strftime ()