English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Python

Контроль потока в Python

Функции Python

Типы данных Python

Операции с файлами в Python

Объекты и классы в Python

Даты и время в Python

Продвинутые знания Python

Руководство Python

strptime() в Python

В этой статье вы узнаете, как создавать объекты datetime из строк (с помощью примеров).

Метод strptime() создает из заданной строкиdatetimeОбъект.

Внимание:Вы не можете создать объект datetime из каждой строки. Строка должна быть в определенном формате.

Пример 1: строка даты и времени объекта

from datetime import datetime
date_string = "21 Июнь, 2018"
print("date_string =", date_string)
print("date_string данные типа =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
print("date_object данные типа =", type(date_object))

При выполнении программы выводится:

date_string = 21 Июнь, 2018
date_string тип данных = <class 'str'>
date_object = 2018-06-21 00:00:00
date_object тип данных = <class 'datetime.datetime'>

Как работает strptime()?

strptime() метод имеет два параметра:

  • Строка (будет преобразована в дату и время)

  • Код формата

В зависимости от используемого строки и кода формата, этот метод возвращает эквивалентный объект datetime.

В примере выше:

Здесь:

  • %d - обозначает день месяца.Пример: 01,02, ..., 31

  • %B - полное имя месяца.Например:Январь, Февраль и т.д.

  • %Y - год представляется четырьмя цифрами.Например: 2018, 2019 и т.д.

Пример 2: строка даты и времени объекта

from datetime import datetime
dt_string = "12/11/2019 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)

При выполнении программы выводится:

dt_object1 = 2019-11-12 09:15:32
dt_object2 = 2019-12-11 09:15:32

Список форматных кодов

Таблица显示了您可以使用的所有格式代码。

ИнструкцииЗначениеПример
%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 2
%pУтро или послеобеденное время в контексте языка.AM,PM
%MМинута, десятичное число, заполненное нулями.00, 01, ..., 59
%-MПредставленный десятичным числом.0, 1, ..., 59
%SВторой десятичный номер с нулевыми заполнителями.00, 01, ..., 59
%-SВторой десятичный номер.0, 1, ..., 59
%fМикросекунды, десятичное число, заполненные нулями слева.000000-999999
%zUTC смещение, формат + 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Пример соответствующего даты в языковой среде.13/9/30
%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'

Рекомендованные для чтения: strftime() в Python