В тази статия ще се научите да създавате обект за дата и час от низ (с помощта на примери).
В strptime()
метода създава вече дата обект от даден низ.
Забележка: Не можете да създадете 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 | Час (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 | Подходящото представяне на дата и час на Locale. | Понеделник 30 септември 07:06:05 2013 |
%x | Подходящо представяне на дата на Locale. | 30.09.13 |
%X | Подходящото представяне на времето на Locale. | 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 ()