Метод strptime() створює об’єкт datetime з переданого рядка.
Примітка: Ви не зможете створити об’єкт datetime з будь-якого рядка. Рядок має бути певного формату.
Метод strptime() в Python
Розглянемо приклад використання методу strptime() в Python:
|
1 2 3 4 5 6 7 8 9 10 11 |
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 June, 2018
type of date_string = <class 'str'>
date_object = 2018-06-21 00:00:00
type of date_object = <class 'datetime.datetime'>
Як працює метод strptime()?
Метод strptime() класу datetime приймає два аргументи:
рядок (який конвертується в об’єкт datetime);
код формату.
На основі рядка, що використовується, та коду формату, метод повертає еквівалентний об’єкт datetime.
У прикладі вище:

Тут код формату:
%d — означає день місяця (наприклад: 01, 02, ..., 31);
%B — повна назва місяця (наприклад: January, February і т.д.);
%Y — рік у чотирьох цифрах (наприклад: 2018, 2019 і т.д.).
Розглянемо приклад конвертації рядка в об’єкт datetime:
|
1 2 3 4 5 6 7 8 9 10 11 |
from datetime import datetime dt_string = "12/11/2018 09:15:32" # Розглядаємо дату у форматі dd/mm/yyyy dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S") print("dt_object1 =", dt_object1) # Розглядаємо дату у форматі mm/dd/yyyy dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S") print("dt_object2 =", dt_object2) |
Результат:
|
1 2 |
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32 |
Список кодів формату
У наступній таблиці є всі коди формату, які ми можемо вказати в методі strptime() в Python.
| Код формату | Значення | Приклад |
| %a | Абревіатурна назва дня тижня. | Sun, Mon, … |
| %A | Повна назва дня тижня. | Sunday, Monday, … |
| %w | День тижня як десяткове число. | 0, 1, …, 6 |
| %d | День місяця у вигляді десяткових чисел із нулем. | 01, 02, …, 31 |
| %-d | День місяця як десяткове число. | 1, 2, …, 30 |
| %b | Абревіатурна назва місяця. | Jan, Feb, …, Dec |
| %B | Повна назва місяця. | January, February, … |
| %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. | AM, PM |
| %M | Хвилина як десяткове число з нулем зліва. | 00, 01, …, 59 |
| %-M | Хвилина як десяткове число. | 0, 1, …, 59 |
| %S | Секунда як десяткове число з нулем зліва. | 00, 01, …, 59 |
| %-S | Хвилина як десяткове число. | 0, 1, …, 59 |
| %f | Мікросекунда як десяткове число з нулем зліва. | 000000 – 999999 |
| %z | Зміщення UTC у формі +HHMM або -HHMM. | |
| %Z | Назва часового поясу. | |
| %j | День року як десяткове число з нулем зліва. | 001, 002, …, 366 |
| %-j | День року як десяткове число. | 1, 2, …, 366 |
| %U | Номер тижня року (“неділя” як перший день тижня). Усі дні в новому році, що передують першій неділі, вважаються тижнем №0. | 00, 01, …, 53 |
| %W | Номер тижня року (понеділок як перший день тижня). Усі дні нового року, що передують першому понеділку, вважаються тижнем №0. | 00, 01, …, 53 |
| %c | Локальні дата та час. | Mon Sep 30 07:06:05 2013 |
| %x | Локальна дата. | 09/30/13 |
| %X | Локальний час. | 07:06:05 |
| %% | Літерал символу ‘%’. | % |
Помилка ValueError у методі strptime()
Якщо рядок (перший аргумент) та код формату (другий аргумент), передані у метод strptime() не збігаються, то виникне помилка ValueError. Наприклад:
|
1 2 3 4 5 6 |
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object) |
Якщо ми запустимо програму, то отримаємо помилку:
ValueError: time data '12/11/2018' does not match format '%d %m %Y'
