English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Artikel werden Sie lernen, wie Sie aus einer Zeichenkette datetime-Objekte erstellen (unter Mithilfe von Beispielen).
Die Methode strptime() erstellt aus der angegebenen ZeichenkettedatetimeObjekt.
Hinweis:Sie können keine datetime-Objekte aus jeder Zeichenkette erstellen. Die Zeichenkette muss ein bestimmtes Format haben.
from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) print("date_string Datenart =", 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 June, 2018 date_string 数据类型 = <class 'str'> date_object = 2018-06-21 00:00:00 date_object 数据类型 = <class 'datetime.datetime'>
strptime()类方法有两个参数:
字符串(将转换为日期时间)
格式代码
根据使用的字符串和格式代码,该方法返回其等效datetime对象。
在上面的示例中:
这里,
%d-表示每月的一天。示例: 01,02,...,31
%B-月份的全名。例如:January, February等
%Y-年份以四位数表示。例如: 2018、2019等
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 | Stunde (2424小时制),作为补零的十进制数字。 | 00、01,...,23 |
%-H | Stunde (24Stundenmodus) als Dezimalzahl. | 0,1,...,23 |
%I | Stunde (12Stundenmodus), als mit Null gefüllte Dezimalzahl. | 01、02,...,12 |
%-I | Stunde (12Stundenmodus) als Dezimalzahl. | 1 2 2 |
%p | Die Vormittags- oder Nachmittagsebene der Sprachumgebung. | AM,PM |
%M | Minute, als mit Null gefüllte Dezimalzahl dargestellt. | 00、01,...,59 |
%-M | Als Dezimalzahl dargestellt. | 0,1,...,59 |
%S | Zweiter mit Null gefüllte Dezimalzahl. | 00、01,...,59 |
%-S | Zweiter Dezimalzahl. | 0,1,...,59 |
%f | Mikrosekunden, Dezimalzahl, links mit Null aufgefüllt. | 000000-999999 |
%z | UTC-Abweichung, formatiert als+ HHMM oder-HHMM。 | |
%Z | Der Zeitbezirkname. | |
%j | Ein Tag im Jahr, als mit Null gefüllte Dezimalzahl dargestellt. | 001,002,...,366 |
%-j | Der Tag im Jahr, als Dezimalzahl dargestellt. | 1,2,...,366 |
%U | Die Woche im Jahr (Sonntag ist der erste Tag der Woche). Alle Tage im neuen Jahr vor dem ersten Sonntag werden als Teil der 0. Woche betrachtet. | 00、01,...,53 |
%W | Die Woche im Jahr (Montag ist der erste Tag der Woche). Alle Tage im neuen Jahr vor dem ersten Montag werden als Teil der 0. Woche betrachtet. | 00、01,...,53 |
%c | Die angemessene Datums- und Zeitdarstellung der Sprachumgebung. | Mon Sep 30 07:06:05 2013 |
%x | Die angemessene Datumsdarstellung der Sprachumgebung. | 13/9/30 |
%X | Die angemessene Zeitdarstellung der Sprachumgebung. | 07:06:05 |
%% | Der Text "%" Zeichen. | % |
Wenn die an strptime() übergebenen Zeichenkette (erster Parameter) und das Formatierungscode (zweiter Parameter) nicht übereinstimmen, wird ValueError zurückgegeben. Zum Beispiel:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object)
Wenn Sie dieses Programm ausführen, wird ein Fehler auftreten.
ValueError: time data12/11/2018'does not match format '%d %m %Y'
Empfohlene Lektüre: Python-strftime()