У цій статті ви навчитеся створювати об’єкт 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 =", type(date_object))
Коли ви запускаєте програму, результат буде:
date_string = 21 червня, 2018 тип date_string = date_object = 2018-06-21 00:00:00 тип date_object =
Як працює strptime ()?
Метод strptime()
класу приймає два аргументи:
- рядок (який буде перетворено на дату та час)
- код формату
На основі використовуваного рядка та формату коду метод повертає еквівалентний 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 =", dt_object2)
Коли ви запускаєте програму, результат буде:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Формат списку кодів
У таблиці нижче наведені всі коди формату, які ви можете використовувати.
Директива | Значення | Приклад |
%a | Скорочена назва робочого дня. | Сонце, Пн,… |
%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 | Година (цілодобовий годинник) як нульове десяткове число. | 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 зміщення у формі + HHMM або -HHMM. | |
%Z | Назва часового поясу. | |
%j | День року як десяткове число, заповнене нулем. | 001, 002,…, 366 |
%-j | День року як десяткове число. | 1, 2,…, 366 |
%U | Номер тижня року (неділя як перший день тижня). Усі дні у новому році, що передують першій неділі, вважаються тижні 0. | 00, 01, …, 53 |
%W | Номер тижня року (понеділок як перший день тижня). Усі дні нового року, що передують першому понеділку, вважаються тижні 0. | 00, 01, …, 53 |
%c | Відповідне подання дати та часу в локалі. | Пн 30 вересня 07:06:05 2013 |
%x | Відповідне представлення дати в локалі. | 30.09.13 |
%X | Відповідне подання часу у локалі. | 07:06:05 |
%% | Буквальний символ "%". | % |
ValueError у strptime ()
Якщо рядок (перший аргумент) і код формату (другий аргумент), передані в strptime()
не збігаються, ви отримаєте ValueError
. Наприклад:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object)
Якщо ви запустите цю програму, ви отримаєте повідомлення про помилку.
ValueError: дані часу '12 / 11/2018 'не відповідають формату'% d% m% Y '
Рекомендовані читання: Python strftime ()