Парсинг дат и времени из строк
Модуль datetime
также предоставляет класс-метод strptime()
, который можно использовать для разбора строки и создания объекта datetime
. Этот метод принимает два аргумента: строку для разбора и строку формата, которая задает ожидаемый формат входной строки. Например, следующий код разбирает строку в формате "YYYY-MM-DD HH:MM:SS" и создает объект datetime
:
s = '2021-12-31 12:30:15'
dt = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
print(dt)
Он выведет "2021-12-31 12:30:15"
Строка формата - это строка символов, соответствующих различным частям даты и времени, таким как год, месяц, день, час, минута и секунда.
Вот некоторые из наиболее часто используемых символов в строке формата:
%Y
: год с веком в виде десятичного числа. Например, "2022"
%m
: месяц в виде десятичного числа с ведущими нулями. Например, "01" для января, "12" для декабря
%d
: день месяца в виде десятичного числа с ведущими нулями. Например, "01" для первого дня месяца, "31" для последнего дня месяца
%H
: час (по 24-часовому формату) в виде десятичного числа с ведущими нулями. Например, "00" для полуночи, "12" для полудня, "23" для 11 вечера
%M
: минута в виде десятичного числа с ведущими нулями. Например, "00" для начала часа, "30" для половины часа
%S
: секунда в виде десятичного числа с ведущими нулями. Например, "00" для начала минуты, "59" для конца минуты
Кроме этих символов, строка формата может также включать литеральные символы, которые будут сопоставляться с входной строкой. Например, следующая строка формата будет соответствовать дате в формате "YYYY-MM-DD":
fmt = '%Y-%m-%d'
Метод strptime()
затем будет использовать эту строку формата для разбора входной строки и извлекать из нее год, месяц и день.
Важно отметить, что строка формата должна точно соответствовать входной строке, в противном случае будет возбуждено исключение. Если вы не уверены в формате входной строки, вы можете использовать инструкции try
и except
для обработки любых потенциальных исключений, которые могут быть возбуждены.
Также метод strptime()
не широко рекомендуется из-за некоторых проблем, таких как то, что он не является потоко-безопасным и медленный. Рекомендуется использовать функцию dateutil.parser.parse()
, которая более гибкая и эффективная.