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

Python Grundlagen教程

Python Prozesssteuerung

Python-Funktion

Python-Datentypen

Python Dateioperationen

Python Objekte und Klassen

Python Datum und Zeit

Python Fortgeschrittene Kenntnisse

Python Referenzhandbuch

Python-strptime()

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.

示例1:日期时间对象的字符串

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()如何工作?

strptime()类方法有两个参数:

  • 字符串(将转换为日期时间)

  • 格式代码

根据使用的字符串和格式代码,该方法返回其等效datetime对象。

在上面的示例中:

这里,

  • %d-表示每月的一天。示例: 01,02,...,31

  • %B-月份的全名。例如:January, February等

  • %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等
%HStunde (2424小时制),作为补零的十进制数字。00、01,...,23
%-HStunde (24Stundenmodus) als Dezimalzahl.0,1,...,23
%IStunde (12Stundenmodus), als mit Null gefüllte Dezimalzahl.01、02,...,12
%-IStunde (12Stundenmodus) als Dezimalzahl.1 2 2
%pDie Vormittags- oder Nachmittagsebene der Sprachumgebung.AM,PM
%MMinute, als mit Null gefüllte Dezimalzahl dargestellt.00、01,...,59
%-MAls Dezimalzahl dargestellt.0,1,...,59
%SZweiter mit Null gefüllte Dezimalzahl.00、01,...,59
%-SZweiter Dezimalzahl.0,1,...,59
%fMikrosekunden, Dezimalzahl, links mit Null aufgefüllt.000000-999999
%zUTC-Abweichung, formatiert als+ HHMM oder-HHMM。 
%ZDer Zeitbezirkname. 
%jEin Tag im Jahr, als mit Null gefüllte Dezimalzahl dargestellt.001,002,...,366
%-jDer Tag im Jahr, als Dezimalzahl dargestellt.1,2,...,366
%UDie 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
%WDie 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
%cDie angemessene Datums- und Zeitdarstellung der Sprachumgebung.Mon Sep 30 07:06:05 2013
%xDie angemessene Datumsdarstellung der Sprachumgebung.13/9/30
%XDie angemessene Zeitdarstellung der Sprachumgebung.07:06:05
%%Der Text "%" Zeichen.%

ValueError in strptime()

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()