Автор оригинала: Pankaj Kumar.
Так что на сегодня мы собираемся обсудить Как превращаем строку в DateTime, используя метод Python Strptime () Отказ
Давайте начнем.
Метод Python Strptime ()
Python Strptime ()
Метод доступен в обоих datetime
и время
модули. Он используется для анализа заданной строки в объект DateTime или Time в соответствии с указанным Формат Отказ
Использование этой функции примерно одинаково для модулей, только различие в типе объекта возвращена. Позвольте нам посмотрите на синтаксис для его использования.
Для datetime Модуль, синтаксис для использования Strptime ()
Метод приведен ниже.
datetime.strptime(date_string, format)
Вышеуказанное утверждение возвращает datetime
Объект, соответствующий date_string
анализируется в соответствии с указанным форматом.
И для время Модуль, синтаксис для использования Strptime ()
довольно похоже.
time.strptime(string[, format])
Здесь метод делает ту же работу, просто здесь возвращенное значение – это struct_time
Объект, возвращенный Gmtime ()
или Локальное время ()
Отказ
Для обоих случаев параметр формата использует те же директивы, что и используемые strftime () Как указано в таблице формата ниже. Формат Параметр должен быть строкой и имеет значение по умолчанию "% A% b% d% h:% m:% s% y"
Отказ Если строка не может быть проанализирована в соответствии с данным форматом, или если он имеет избыточные данные после анализа, A ValueError
Поднялся.
Формат таблицы
Вы должны выполнить следующую таблицу формата, чтобы использовать соответствующие директивы при указании параметра формата.
% А. | среда | Недели как полное имя локали. |
% а. | Пн, вт, ср. | Недели как сокращенное имя локали. |
% w. | 0,1,2,3,4 … 6. | Недели в качестве десятичного числа, где 0 – воскресенье и 6 суббота. |
% D. | 01,02,03 … 31. | День месяца как нулевой десятичный номер. |
% -D | 1,2,3 … | День месяца как десятичное число. (Конкретная платформа) |
% B. | Март | Месяц как сокращенное имя локали. |
% B. | маршировать | Месяц как полное имя локали. |
% М. | 01,02 … 12. | Месяц как нулевой десятичный номер. |
% -m. | 1,2, … 12 | Месяц как десятичное число. (Конкретная платформа) |
% Y. | 20 (на 2020) | Год без века как нулевой десятичный номер. |
% Y. | 2020, 2021 и др. | Год с веком как десятичное число. |
%ЧАС | 01, 02, … | Час (24-часовые часы) в качестве нулевого десятичного числа. |
%-ЧАС | 1,2,3, … | Час (круглосуточная часа) как десятичное число. (Конкретная платформа) |
%Я | 01, 02, 03, … | Час (12-часовые часы) в качестве нулевого десятичного числа. |
%-Я | 1, 2, 3 … | Час (12-часовые часы) как десятичное число. (Конкретная платформа) |
%п | ДО ПОЛУДНЯ ПОСЛЕ ПОЛУДНЯ | Эквивалент локалии либо AM или PM. |
% М. | 01, 02, … 59 | Минута в качестве нулевого десятичного числа. |
% -M. | 1,2,3, … 59 | Минута как десятичное число. (Конкретная платформа) |
% S. | 01, 02, … 59 | Второе как нулевое десятичное число. |
% -А. | 1, 2, … 59 | Во-вторых, как десятичное число. (Конкретная платформа) |
% f. | 000000 | Microcond в качестве десятичного числа, нулевой навесной слева. |
% Z. | (пусто), +0000, -0400, +1030 | Смещение UTC в виде + HHMM или -HHMM (пустая строка, если объект наивен). |
% Z. | (пустой), UTC, IST, CST | Имя часового пояса (пустая строка, если объект наивен). |
% j | 1, 2, 3, … 366 | День года как нулевой десятичный номер. |
% -J. | 1, 2, 3, … 366 | День года как десятичное число. (Конкретная платформа) |
% U. | 1, 2, 3, … 53 | Неделя номер года (воскресенье как первый день недели) как нулевое мягкое десятичное число. Все дни в новом году, предшествующим первым воскресенье, считаются в неделю 0. |
% W. | 1, 2, 3, … 53 | Неделю номер года (понедельник как первый день недели) как десятичное число. Все дни в новом году, предшествующим первым понедельник, считаются в неделю 0. |
% C. | Ср 06 12:23:56 2020 | Соответствующее представление о дате и времени Локали. |
%Икс | 05/06/20 | Соответствующее представление о дате имени Локалии. |
%ИКС | 12:23:56. | Соответствующее время свободного времени. |
%% | % | Буквальный «%» характер. |
Работа с методом Strptime ()
Так что теперь, когда мы знакомы с синтаксисом использования Strptime ()
Способ для модулей TimeTime и Time, давайте посмотрим, как мы можем его использовать.
1. Time.Strptime ()
В приведенном ниже примере мы собираемся преобразовать заданную строку в время объект.
import time time_string = "06/05/2020 12:06:58" obj = time.strptime(time_string, "%d/%m/%Y %H:%M:%S") print(type(obj)) print(obj) #parsing using default formatting: %a %b %d %H:%M:%S %Y def_obj = time.strptime("Wed May 06 12:06:58 2020") print(def_obj)
Выход:
time.struct_time(tm_year=2020, tm_mon=5, tm_mday=6, tm_hour=12, tm_min=6, tm_sec=58, tm_wday=2, tm_yday=127, tm_isdst=-1) time.struct_time(tm_year=2020, tm_mon=5, tm_mday=6, tm_hour=12, tm_min=6, tm_sec=58, tm_wday=2, tm_yday=127, tm_isdst=-1)
Здесь time_string
это данная строка, содержащая соответствующие параметры времени. Мы разбираем эту строку с помощью функции Strptime () после “% d/% м/% y% h:% m:% s” Формат в переменную obj
Отказ Как и ожидалось, Obj имеет тип time.struct_time
Отказ
Оменно мы также проанализировали еще одну строку, используя форматирование по умолчанию (без указания параметра формата). Как упоминалось ранее в этом случае по умолчанию формат установлен на % A% b% d% h:% m:% s% y
Отказ Это оправдывает вывод.
2. DateTime.Strptime ()
Теперь будем использовать Strptime ()
Способ преобразования заданной строки в datetime объект.
from datetime import datetime dt_string = "06//05//2020 12:06:58" obj = datetime.strptime(dt_string, "%d//%m//%Y %H:%M:%S") print(type(obj)) print("DateTime object: ", obj) print("Time object: ", obj.time()) print("Date object: ", obj.date())
Выход:
Как вы можете видеть с выхода выше, dt_string
успешно преобразуется в datetime объект. Мы также можем использовать Время ()
и Дата ()
функционирует над этим объектом, чтобы получить datetime.time и datetime.date объекты соответственно.
Давайте посмотрим на другой пример, где мы принимаем дату и время, используя функцию ввода () от пользователя.
from datetime import datetime dt_string = str(input("Enter date in dd:mm:yyyy format:")) try: obj = datetime.strptime(dt_string, "%d:%m:%Y") print(obj) print(obj.strftime("Date:%d Month:%m Year:%Y")) #strftime to format datetime obj except ValueError as ex: print("ValueError: ", ex)
Выход:
В этом примере мы берем dt_string
как пользовательский ввод и преобразовать его в объект dateTime, используя Strptime ()
метод. Снова мы принимаем этот объект и распечатайте, это наш желаемый формат, используя strftime ()
метод.
Что если мы не предоставим метод STRPTIME () строка, которая соответствует указанному формату? В этом случае A ValueError
Поднялся. Посмотрите на выход ниже (для того же кода), где мы это делаем.
Enter date in dd:mm:yyyy format:6/5/20 ValueError: time data '6/5/20' does not match format '%d:%m:%Y'
Суммирование
Итак, мы сегодня узнали о преобразовании строки в различные типы в Python, используя Strptime ()
метод.
Для любых дополнительных вопросов, связанных с темой, не стесняйтесь использовать комментарии ниже.
Рекомендации
- Что такое функция Python STRFTIME ()? ,
- Модуль времени Python ,
- время Strptime () – Документация Python,
- DateTime Strptime () – Документация Python.