Автор оригинала: Pankaj Kumar.
Мы можем преобразовать строку в DateTime, используя Strptime ()
функция. Эта функция доступна в datetime и время Модули для анализа строки к объектам DateTime и Time соответственно.
Python Strptime ()
Python Strptime () – это метод класса в классе DateTime. Его синтаксис:
datetime.strptime(date_string, format)
Оба аргумента являются обязательными и должны быть строки. Эта функция точно противоположная функции strftime (), которая преобразует объект dateTime в строку.
У нас есть аналогичная функция, доступная во время модуля Time, где его синтаксис:
time.strptime(time_string[, format])
Здесь функция возвращает struct_time
объект. Если строка формата не предоставлена, по умолчанию по умолчанию используется «% A% b% d% h:% m:% s% y», что соответствует форматированию, возвращаемому функцией Cime ().
Если входная строка не может быть проанализирована в соответствии с приведенным форматом, то ValueError
Поднялся. Сообщение об исключении предоставляет четкие детали о проблеме в разборе.
Директивы формата Python Strptime ()
В следующей таблице содержится большинство часто используемых директив формата.
% а. | Недели как сокращенное имя локали. | Солнце, пн, …, сел (en_us) Итак, мо, …, SA (de_de) |
% А. | Недели как полное имя локали. | Воскресенье, понедельник, …, суббота (EN_US) Sonntag, Montag, …, Samstag (De_de) |
% w. | Недели в качестве десятичного числа, где 0 – воскресенье и 6 суббота. | 0, 1, 2, 3, 4, 5, 6 |
% D. | День месяца как нулевой десятичный номер. | 01, 02, …, 31 |
% B. | Месяц как сокращенное имя локали. | Ян, Фев, …, Дека (EN_US) Ян, Фев, …, Дез (de_de) |
% B. | Месяц как полное имя локали. | Январь, февраль, …, декабрь (en_us) januar, februar, …, dezember (de_de) |
% М. | Месяц как нулевой десятичный номер. | 01, 02 … 12 |
% Y. | Год без века как нулевой десятичный номер. | 01, 02, … 99 |
% Y. | Год с веком как десятичное число. | 0001, 0002, …, 9999 |
%ЧАС | Час (24-часовые часы) в качестве нулевого десятичного числа. | 01, 02, …, 23 |
%Я | Час (12-часовые часы) в качестве нулевого десятичного числа. | 01, 02, …, 12 |
%п | Эквивалент локалии либо AM или PM. | AM, PM (EN_US) AM, PM (de_de) |
% М. | Минута в качестве нулевого десятичного числа. | 01, 02, …, 59 |
% S. | Второе как нулевое десятичное число. | 01, 02, …, 59 |
% f. | Microcond в качестве десятичного числа, нулевой навесной слева. | 000000, 000001, …, 999999 Не применимо со временем модуль. |
% Z. | Смещение UTC в виде ± HHMM [SS] (пустая строка, если объект наивен). | (пусто), +0000, -0400, +1030 |
% Z. | Имя часового пояса (пустая строка, если объект наивен). | (пустой), UTC, IST, CST |
% j | День года как нулевой десятичный номер. | 001, 002, …, 366 |
% U. | Неделя номер года (воскресенье как первый день недели) как нулевое мягкое десятичное число. Все дни в новом году, предшествующим первым воскресенье, считаются в неделю 0. | 00, 01, …, 53 |
% W. | Неделю номер года (понедельник как первый день недели) как десятичное число. Все дни в новом году, предшествующим первым понедельник, считаются в неделю 0. | 00, 01, …, 53 |
% C. | Соответствующее представление о дате и времени Локали. | TEUG 16 21:30:00 1988 (EN_US) DI 16 августа 21:30:00 1988 (de_de) |
%Икс | Соответствующее представление о дате имени Локалии. | 08/16/88 (нет) 08/16/1988 (en_us) 16.08.1988 (de_de) |
%ИКС | Соответствующее время свободного времени. | 21:30:00 (en_us) 21:30:00 (de_de) |
%% | Буквальный «%» характер. | % |
Примеры Python Strptime ()
Давайте посмотрим на некоторые конкретные примеры функции Strptime () для преобразования строки в объекты DateTime и Time.
Строка в dateTime.
from datetime import datetime datetime_str = '09/19/18 13:55:26' datetime_object = datetime.strptime(datetime_str, '%m/%d/%y %H:%M:%S') print(type(datetime_object)) print(datetime_object) # printed in default format
Выход:
2018-09-19 13:55:26
Строка на сегодняшний день
Мы можем использовать функцию даты (), а также функцию Strptime () для преобразования объекта String на сегодняшний день.
date_str = '09-19-2018' date_object = datetime.strptime(date_str, '%m-%d-%Y').date() print(type(date_object)) print(date_object) # printed in default formatting
Выход:
2018-09-19
Строка к объекту времени
Мы можем использовать функцию времени () наряду с функцией StrPTIME () для преобразования string к объекту времени.
time_str = '13::55::26' time_object = datetime.strptime(time_str, '%H::%M::%S').time() print(type(time_object)) print(time_object)
Выход:
13:55:26
Пример Python Time Strptime ()
Давайте посмотрим некоторые примеры использования функции Module Module Brttime ().
import time time_obj = time.strptime(time_str, '%H::%M::%S') print(type(time_obj)) print(time_obj) # default formatting - "%a %b %d %H:%M:%S %Y" print(time.strptime('Wed Sep 19 14:55:02 2018'))
Выход:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=13, tm_min=55, tm_sec=26, tm_wday=0, tm_yday=1, tm_isdst=-1) time.struct_time(tm_year=2018, tm_mon=9, tm_mday=19, tm_hour=14, tm_min=55, tm_sec=2, tm_wday=2, tm_yday=262, tm_isdst=-1)
Python Strptime () Пример ValueError
Мы можем использовать Try-Block, чтобы поймать исключение на анализ и выполнять корректирующие действия.
datetime_str = '09/19/18 13:55:26' try: datetime_object = datetime.strptime(datetime_str, '%m/%d/%y') except ValueError as ve: print('ValueError Raised:', ve) time_str = '99::55::26' try: time_object = time.strptime(time_str, '%H::%M::%S') except ValueError as e: print('ValueError:', e)
Выход:
ValueError Raised: unconverted data remains: 13:55:26 ValueError: time data '99::55::26' does not match format '%H::%M::%S'
Обратите внимание, что сообщение ValueError четко объясняет корневую причину исключения анализа.
Python преобразует строку в DateTime с локалом
Давайте посмотрим на пример, где локальная строка будет преобразована в объект dateTime. Мы будем использовать модуль Locale для установки локали для использования Python.
import locale locale.setlocale(locale.LC_ALL, 'de_DE') date_str_de_DE = '10-Dezember-2018 Montag' # de_DE locale datetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A') print(datetime_object)
Выход: 2018-12-10 00:00:00
Ссылки: DateTime Strptime () , время Strptime ()