Метод strptime() и strftime() в Python
В этой статье вы научитесь создавать объект 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 EnlighterJSRAW» data-enlighter-language=»python»>date_string = 21 June, 2018 type of date_string = date_object = 2018-06-21 00:00:00 type of date_object =
Как работает strptime()?
Метод strptime() в Python принимает два аргумента:
На основе используемой строки и кода формата метод возвращает эквивалентный объект 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 EnlighterJSRAW" data-enlighter-language="python">dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Список кодов форматов
В таблице ниже показаны все коды формата, которые вы можете использовать:
Директива | Значение | Пример |
% 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
Если строка (первый аргумент) и код формата (второй аргумент), не совпадают, вы получите ValueError. Например:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object EnlighterJSRAW" data-enlighter-language="python">ValueError: time data '12/11/2018' does not match format '%d %m %Y'
В этой статье вы научитесь преобразовывать объекты даты, времени и даты и времени в эквивалентную строку (с помощью примеров).
Метод strftime() возвращает строку, представляющую дату и время, используя объект date, time или datetime.
Преобразование даты и времени в строку
Приведенная ниже программа преобразует объект, содержащий текущую дату и время, в различные строковые форматы.
from datetime import datetime now = datetime.now() # current date and time year = now.strftime("%Y") print("year:", year) month = now.strftime("%m") print("month:", month) day = now.strftime("%d") print("day:", day) time = now.strftime("%H:%M:%S") print("time:", time) date_time = now.strftime("%m/%d/%Y, %H:%M:%S") print("date and time:",date_time)
Когда вы запустите программу, результат будет примерно таким:
year: 2018 month: 12 day: 24 time: 04:59:31 date and time: 12/24/2018, 04:59:31
Здесь год, день, время и date_time ‒ это строки, а now ‒ объект datetime.
Как работает strftime() ?
В приведенной выше программе % Y,% m,% d и т.д. являются кодами формата. Метод strftime() принимает один или несколько кодов формата в качестве аргумента и возвращает отформатированную строку на его основе.
- Мы импортировали класс datetime из модуля datetime. Это потому, что объект класса datetime может получить доступ к методу strftime().
- Объект datetime, содержащий текущую дату и время, сохраняется в переменной now .
- Метод можно использовать для создания форматированных строк.
- Строка, которую вы передаете методу strftime(), может содержать более одного кода формата.
Создание строки из отметки времени
from datetime import datetime timestamp = 1528797322 date_time = datetime.fromtimestamp(timestamp) print("Date time object:", date_time) d = date_time.strftime("%m/%d/%Y, %H:%M:%S") print("Output 2:", d) d = date_time.strftime("%d %b, %Y") print("Output 3:", d) d = date_time.strftime("%d %B, %Y") print("Output 4:", d) d = date_time.strftime("%I%p") print("Output 5:", d)
Когда вы запустите программу, вывод будет:
Date time object: 2018-06-12 09:55:22 Output 2: 06/12/2018, 09:55:22 Output 3: 12 Jun, 2018 Output 4: 12 June, 2018 Output 5: 09AM
Пример 3
from datetime import datetime timestamp = 1528797322 date_time = datetime.fromtimestamp(timestamp) d = date_time.strftime("%c") print("Output 1:", d) d = date_time.strftime("%x") print("Output 2:", d) d = date_time.strftime("%X") print("Output 3:", d)
Когда вы запустите программу, вывод будет:
Output 1: Tue Jun 12 09:55:22 2018 Output 2: 06/12/18 Output 3: 09:55:22
Коды формата % c,% x и % X используются для соответствующего языкового стандарта представления даты и времени.