Direkt zum Inhalt

Python-Zeichenkette in DateTime: Wie man Zeichenfolgen in DateTime-Objekte umwandelt

Lerne in dieser Schritt-für-Schritt-Anleitung alles über das Python-Modul „datetime“, das die Umwandlung von Zeichenfolgen in Datums- und Zeitangaben, Code-Beispiele und häufige Fehler behandelt.
Aktualisierte 17. Okt. 2025  · 8 Min. Lesezeit

In Python sind Strings ein gängiger Datentyp, um Datums- und Zeitangaben darzustellen. Als Datenwissenschaftler und Ingenieure müssen wir diese Strings aber oft in Datetime-Objekte umwandeln, um verschiedene Operationen wie Sortieren oder Vergleichen durchzuführen.

Das Umwandeln von Strings in Datums- und Uhrzeitobjekte kann schwierig sein, vor allem für Leute, die Python noch nicht so gut kennen. Also, in diesem Artikel zeig ich dir Schritt für Schritt, wie du diese Methoden anwendest, und gebe dir dabei auch ein paar Code-Beispiele. Egal, ob du ein erfahrener Entwickler bist oder gerade erst anfängst, lass uns in die Welt der Datums- und Uhrzeitobjekte in Python eintauchen!

Um alle Beispielcodes in diesem Tutorial ganz einfach selbst auszuführen, kannst du kostenlos eine DataLab-Arbeitsmappe erstellen, auf der Python schon installiert ist und die alle Code-Beispiele enthält. Wenn du mehr darüber lernen willst, wie man Strings in Datetime-Objekte umwandelt, schau dir diese praktische DataCamp-Übung an.

Python von Grund auf lernen

Beherrsche Python für Data Science und erwerbe gefragte Fähigkeiten.
Kostenloses Lernen beginnen

Einführung in das Python-Modul „datetime“

Das Modul „ datetime “, das in Python eingebaut ist, kannst du immer dann nutzen, wenn du mit Datumsangaben, Uhrzeiten oder Zeitintervallen für eine mit Python erstellte Anwendung arbeiten musst. Es bietet praktische Klassen und Methoden zum Darstellen und Bearbeiten von Datums- und Zeitdaten.

Tabelle 1: Zusammenfassung der Klassen und Methoden im Modul „datetime“

Klasse/Methode Zweck Häufige Anwendungsfälle
datetime.date Stellt ein Datum dar (Jahr, Monat, Tag). Berechnung von Datumsunterschieden, Formatierung von Datumsangaben als Zeichenfolgen, Extrahieren von Datumskomponenten.
datetime.time Zeigt die Tageszeit an (Stunde, Minute, Sekunde, Mikrosekunde). Zeiten vergleichen, Zeiten als Zeichenfolgen formatieren, Zeitkomponenten extrahieren.
datetime.datetime Zeigt ein Datum und eine Uhrzeit an. Kombiniert Datums- und Zeitfunktionen. Arbeiten mit Zeitreihendaten, Herausziehen von Datums- und Zeitkomponenten, Formatieren als Zeichenfolgen.
datetime.timedelta Zeigt den Unterschied zwischen zwei Daten oder Zeiten an (Dauer). Dauer zu Daten oder Zeiten hinzufügen oder davon abziehen, Zeitintervalle berechnen.
datetime.strptime() Verarbeitet eine Zeichenfolge in ein Datums-/Zeitobjekt, basierend auf einem bestimmten Format. Umwandlung von Zeichenfolgen in Datums-/Zeitobjekte für die weitere Bearbeitung und Analyse.
datetime.strftime() Formatiert ein Datums-/Zeitobjekt in eine Zeichenfolge nach einem bestimmten Format. Datums- und Uhrzeitobjekte in lesbare Zeichenfolgen umwandeln, um sie anzuzeigen oder in Berichten zu verwenden.

Schauen wir uns mal die wichtigsten Klassen in diesem Modul an , weil wir sie in Datums- und Uhrzeitobjekte umwandeln werden:

1. datetime.date

Diese Klasse zeigt ein Datum (Jahr, Monat und Tag) an und hat Methoden, um mit Daten zu arbeiten, wie zum Beispiel die Differenz zwischen zwei Daten zu berechnen und Daten als Zeichenfolgen zu formatieren.

Angenommen, wir haben einen Datensatz mit den täglichen Aktienkursen eines Unternehmens. Wir können die Datumsklasse nutzen, um die Daten aus dem Datensatz zu holen und die Aktienkurse im Zeitverlauf darzustellen.

Hier ist ein Ausschnitt, der zeigt, wie man die Klasse „ date “ benutzt:

from datetime import date

# create a date object representing March 1, 2023
start_date = date(2023, 3, 1)

# extract information such as the year, month, and day
year = start_date.year
month = start_date.month
day = start_date.day

# get the day of the week (Note: Monday is coded as 0, and Sunday as 6)
weekday = start_date.weekday()

# the date can be formatted as a string if needed
date_str = start_date.strftime('%Y-%m-%d')

2. datetime.time

Diese Klasse zeigt die Tageszeit an (Stunde, Minute, Sekunde und Mikrosekunde) und hat Methoden, um mit Zeiten zu arbeiten, wie zum Beispiel Zeiten zu vergleichen und als Zeichenfolgen zu formatieren.

Nehmen wir mal an, wir haben einen Datensatz mit den Zielzeiten eines Rennens. Mit der Klasse „ time “ können wir die Stunden und Minuten jedes Teilnehmers extrahieren, der das Rennen beendet hat.

from datetime import time

# create a time object with the microsecond granularity
end_time = time(15, 45, 30, 500000)

# get the hour and minute
hour = end_time.hour
minute = end_time.minute
second = end_time.second
microsecond = end_time.microsecond

3. datetime.datetime

Diese Klasse zeigt ein Datum und eine Uhrzeit an und hat Methoden, um mit beiden zu arbeiten. Es vereint die Funktionen der Klassen für Datum und Uhrzeit.

Es wird oft bei Datenanalysen benutzt, die Zeitreihendaten mit einer hohen zeitlichen Auflösung beinhalten, wie zum Beispiel stündliche oder minütliche Daten. Nehmen wir mal an, wir haben einen Datensatz, der den stündlichen Strombedarf einer Stadt zeigt. Wir können die Klasse „ datetime “ nutzen, um Datum und Uhrzeit aus dem Datensatz zu holen und den Strombedarf im Zeitverlauf darzustellen.

from datetime import datetime

# create a datetime object representing March 1, 2023 at 9:30 AM
start_datetime = datetime(2023, 3, 1, 9, 30)

# get the year, month, day, hour, and minute
year = start_datetime.year
month = start_datetime.month
day = start_datetime.day
hour = start_datetime.hour
minute = start_datetime.minute

4. datetime.timedelta

Diese Klasse steht für eine Dauer oder ein Zeitintervall und hat Methoden, um mit Zeitintervallen zu arbeiten, wie zum Beispiel Zeitintervalle zu Datums- oder Zeitangaben hinzuzufügen oder davon abzuziehen.

Angenommen, wir haben einen Datensatz mit den Start- und Endzeiten einer Reihe von Ereignissen und wollen die Gesamtdauer aller Ereignisse berechnen. Wir können die Klasse „ timedelta “ nutzen, um die Dauer jedes Ereignisses zu berechnen und sie zusammenzurechnen.

from datetime import timedelta

# create a timedelta object representing 3 hours and 15 minutes
event_duration = timedelta(hours=3, minutes=15)

# get the total duration in seconds
event_duration_seconds = event_duration.total_seconds()

# add the duration to a start time to get an end time
event_start_time = datetime(2023, 3, 1, 18, 15)
event_end_time = event_start_time + event_duration

In allen gezeigten Fällen haben wir „ datetime “-Objekte benutzt, aber in der Praxis bleiben die echten Daten oft als Zeichenfolge. Und wenn du es in ein „ datetime “-Objekt umwandelst, kannst du alle oben genannten Funktionen nutzen, die für Datenanalysen und Anwendungen echt nützlich sind.

Verwendung von datetime.strptime() für die Datums- und Uhrzeitkonvertierung

In Python können wir die Methode „ datetime.strptime() “ nutzen, um eine Zeichenfolge in ein Datums-/Zeitobjekt umzuwandeln. Die Methode „ strptime() “ braucht zwei Argumente: die zu konvertierende Zeichenfolge und eine Formatzeichenfolge, die das Format der Eingabezeichenfolge angibt.

Der Formatstring nutzt eine Mischung aus Formatierungscodes, um die verschiedenen Teile von Datum und Uhrzeit darzustellen. Hier sind ein paar der am häufigsten verwendeten Formatierungscodes:

Tabelle 2: Häufige Formatierungscodes für Datum und Uhrzeit

Formatcode Beschreibung Beispiel für eine Eingabe Beispielausgabe
%Y 4-stellige Jahreszahl 2023 2023
%y 2-stellige Jahreszahl 23 23
%m 2-stelliger Monat (01-12) 03 03
%d 2-stelliger Tag des Monats (01-31) 15 15
%H 2-stellige Stunde (00-23) 14 14
%I 2-stellige Stunde (01-12) 02 02
%M 2-stellige Minutenanzeige (00-59) 45 45
%S 2-stellige Sekunden (00-59) 30 30
%f Mikrosekunde (000000–999999) 123456 123456
%p vormittags oder nachmittags PM PM
%z UTC-Versatz +0530 +0530
%a Abgekürzter Name des Wochentags Di Di
%A Vollständiger Name des Wochentags Dienstag Dienstag
%b Abgekürzter Monatsname Mar Mar
%B Vollständiger Monatsname März März
%j Tag des Jahres (001-366) 074 074
%U Woche des Jahres (Sonntag als erster Tag) 10 10
%W Woche des Jahres (Montag als erster Tag) 09 09

Jetzt, wo wir die Anweisungen „ strptime “ verstehen, können wir das Umwandeln von Strings in Datums- und Uhrzeitobjekte einfacher machen.

  • Schritt 01: Analysiere die Datums- und Zeitzeichenfolge, die konvertiert werden kann, auf Muster, die mit den Formatierungscodes übereinstimmen.

  • Schritt 02: Mach das Datums- und Zeitformat aus den Anweisungen „ strptime()“.

  • Schritt 03: Gib die Zeichenfolge und das Format an die Funktion weiter und erhalte das Objekt als Ausgabe.

Lass uns diese Schritte umsetzen.

Eine Zeichenfolge in einem bestimmten Format in ein Datums-/Zeitobjekt umwandeln

from datetime import datetime

# Example with the standard date and time format
date_str = '2023-02-28 14:30:00'
date_format = '%Y-%m-%d %H:%M:%S'

date_obj = datetime.strptime(date_str, date_format)
print(date_obj)

# Example with a different format

date_str = '02/28/2023 02:30 PM'
date_format = '%m/%d/%Y %I:%M %p'

date_obj = datetime.strptime(date_str, date_format)
print(date_obj)

Im ersten Beispiel haben wir eine Zeichenfolge, die ein Datum und eine Uhrzeit im Format „JJJJ-MM-TT HH:MM:SS“ darstellt, und im zweiten Beispiel ein anderes Format, „MM/TT/JJJJ HH:MM AM/PM“.

In beiden Fällen geben wir die richtige Formatzeichenfolge als zweites Argument für „ strptime() “ an, um das richtige Datums-/Zeitobjekt zu bekommen.

Eine Zeichenfolge mit Zeitzoneninfos in ein Datums-/Zeitobjekt umwandeln

from datetime import datetime

date_str = '2023-02-28 14:30:00+05:30'
date_format = '%Y-%m-%d %H:%M:%S%z'

date_obj = datetime.strptime(date_str, date_format)
print(date_obj)

In diesem Beispiel haben wir eine Zeichenfolge, die ein Datum und eine Uhrzeit mit Zeitzoneninfos im Format „YYYY-MM-DD HH:MM:SS+TZOFFSET“ darstellt, wobei „ TZOFFSET “ der Zeitzonenversatz in Stunden und Minuten gegenüber UTC ist. Wir geben die Formatzeichenfolge als zweites Argument für „ strptime() “ an, einschließlich des Formatierungscodes „ %z “, um den Zeitzonen-Offset zu analysieren.

Auch wenn die Funktion, die wir oben gesehen haben, in der Theorie einfach aussieht, kann sie in der Praxis echt frustrierend sein, wenn was schiefgeht.

Daten ohne Formatzeichenfolgen mit dateutil analysieren

Eine weitere flexible Option ist die Bibliothek „ dateutil “, vor allem die Funktion „ parser.parse() “. Es erkennt automatisch Datumsformate, sodass du Zeichenfolgen analysieren kannst, ohne eine Formatzeichenfolge anzugeben.

from dateutil.parser import parse

# Automatically infers the format
date_obj = parse("March 1, 2023 9:30 AM")
print(date_obj)

Das ist besonders praktisch, wenn man mit unvorhersehbaren oder uneinheitlichen Datumsformaten zu tun hat.

Umgang mit Zeitzonen

Für die zeitzonenbewusste Verarbeitung von Datums- und Zeitangaben bietet Python zwei beliebte Optionen:

  • pytz (weit verbreitet und mit älteren Versionen kompatibel)

  • zoneinfo (eingeführt in Python 3.9, Teil der Standardbibliothek)

from datetime import datetime
from zoneinfo import ZoneInfo

# Using zoneinfo
dt = datetime(2023, 3, 1, 9, 30, tzinfo=ZoneInfo("America/New_York"))
print(dt)

# Using pytz (alternative)
import pytz
dt_pytz = datetime(2023, 3, 1, 9, 30, tzinfo=pytz.timezone("America/New_York"))
print(dt_pytz)

Mit diesen Tools kannst du Zeitzonen festlegen, zwischen ihnen umrechnen und die Sommerzeit automatisch berücksichtigen.

Überlegungen zur Sommerzeit

Bei der Arbeit mit Datums- und Zeitangaben, die die Zeitzone berücksichtigen, kann die Sommerzeit (DST) Probleme verursachen – vor allem, wenn die Uhren vor- oder zurückgestellt werden.

Bibliotheken wie zoneinfo und pytz kümmern sich automatisch um die Umstellung auf Sommerzeit, wenn du die richtige Zeitzone angibst:

from datetime import datetime
from zoneinfo import ZoneInfo

# Before and after DST starts
before_dst = datetime(2023, 3, 12, 1, 30, tzinfo=ZoneInfo("America/New_York"))
after_dst = datetime(2023, 3, 12, 3, 30, tzinfo=ZoneInfo("America/New_York"))

print(before_dst)
print(after_dst)

Dadurch wird sichergestellt, dass Datums- und Zeitberechnungen auch bei Sommerzeitumstellungen genau bleiben.

Pandas für die Datums- und Uhrzeitkonvertierung nutzen

Obwohl das in Python integrierte Modul „ datetime “ echt leistungsstark ist, nutzen viele Datenwissenschaftler lieber die Pandas-Bibliothek für Datums- und Uhrzeitkonvertierungen, weil sie einfach zu bedienen ist und ganze Spalten mit Datumsangaben effizient verarbeiten kann.

import pandas as pd

# Converting a column of strings to datetime objects
date_series = pd.to_datetime(['2023-02-28', '2023-03-01', '2023-03-02'])
print(date_series)

Pandas erkennt Formate automatisch und geht super mit häufigen Inkonsistenzen um, was es zur ersten Wahl bei der Arbeit mit tabellarischen Daten macht.

Formatieren von Datetime-Objekten zu Strings mit strftime()

Nachdem du Strings in Datums-/Zeitobjekte umgewandelt und die gewünschten Operationen durchgeführt hast, musst du sie möglicherweise wieder in Strings zurückwandeln. Du kannst dafür datetime.strftime() nutzen.

from datetime import datetime

now = datetime.now()
formatted = now.strftime('%Y-%m-%d %H:%M:%S')
print(formatted)

Mit dieser Methode kannst du komplett bestimmen, wie dein Datums- und Uhrzeitobjekt als Zeichenfolge angezeigt wird.

Fehlerbehebung bei häufigen Fehlern mit strptime()

Hier sind ein paar häufige Fehler, die auftreten können, und wie du sie beheben kannst:

Wertfehler: Die Zeitangabe „date_string” passt nicht zum Format „%Y-%m-%d %H:%M:%S”.

Der häufigste Fehler passiert, wenn die Eingabezeichenfolge nicht mit der Formatzeichenfolge übereinstimmt. Bitte überprüfe nochmal, ob die Eingabezeichenfolge und die Formatzeichenfolge genau übereinstimmen.

import datetime

# When input has two-digit year instead of four-digit year
date_str = '23-03-01'
date_obj = datetime.datetime.strptime(date_str, '%y-%m-%d')
# Raises ValueError: time data '23-03-01' does not match format '%y-%m-%d'

# When the input has missing leading zeros for hour and minute
time_str = '8:30'
time_obj = datetime.datetime.strptime(time_str, '%H:%M')
# Raises ValueError: time data '8:30' does not match format '%H:%M'

Typfehler: Das Argument 1 von strptime() muss ein String sein, kein „int“.

Der nächste häufige Fehler passiert, wenn du eine Ganzzahl an datetime.strptime() oder time.strptime() übergibst, statt eine Zeichenkette. Stell sicher, dass alle Werte, die du an die Funktion übergibst, Zeichenfolgen sind.

# Example 1: Integer instead of string
date_int = 20230301
date_obj = datetime.datetime.strptime(date_int, '%Y%m%d')
# Raises TypeError: strptime() argument 1 must be str, not int

# Example 2: List instead of string
date_list = [2023, 3, 1]
date_obj = datetime.datetime.strptime(date_list, '%Y-%m-%d')
# Raises TypeError: strptime() argument 1 must be str, not list

ValueError: Nicht konvertierte Daten bleiben: „:00“

Dieser Fehler passiert, wenn in der Eingabezeichenfolge Zeichen übrig bleiben, die nicht mit der Formatzeichenfolge übereinstimmen. Dieser Fehler tritt zum Beispiel auf, wenn die Formatzeichenfolge nur das Jahr, den Monat und den Tag angibt, die Eingabezeichenfolge aber auch die Uhrzeit enthält. Um diesen Fehler zu beheben, musst du sicherstellen, dass die Formatzeichenfolge mit der gesamten Eingabezeichenfolge übereinstimmt.

# when input string contains time of day
date_str = '2023-03-01 12:30:00'
date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')
# Raises ValueError: unconverted data remains:  12:30:00

# When input string contains extra characters
date_str = '2023-03-01T00:00:00Z'
date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')
# Raises ValueError: unconverted data remains: T00:00:00Z

Fazit

Man kann echt sagen, dass die Methode „ datetime.strptime() “ eine flexible und leistungsstarke Möglichkeit bietet, Strings in Python in Datums- und Uhrzeitobjekte umzuwandeln, und dass sie für die Verarbeitung einer Vielzahl von Datums- und Uhrzeitformaten verwendet werden kann. Hol dir doch einfach unser Cheatsheet mit Terminen und Zeiten, damit du später alles parat hast.

Nachdem du die Daten und Zeiten verstanden hast, geht's weiter damit, sie in einem Projekt anzuwenden. Wir empfehlen dir, dir eins davon auszusuchen und dein Wissen zu vertiefen:

Wir sind uns einig, dass Datums- und Zeitangaben in der echten Welt kompliziert sind, aber du musst nur die Formate und Muster hinter jeder Art von Datum und Uhrzeit in deinen Daten verstehen und die Bibliotheken, die du hast, clever nutzen.

Häufig gestellte Fragen

Wie kann ich mit Zeichenfolgen mit gemischten Datumsformaten im selben Datensatz umgehen?

Wenn du mit Datensätzen arbeitest, die gemischte Datumsformate haben, kannst du das Modul „dateutil“ von Python nutzen. Die Funktion dateutil.parser.parse() ist flexibler als datetime.strptime(), weil sie verschiedene Datumsformate automatisch erkennen und analysieren kann, ohne dass man eine vordefinierte Formatzeichenfolge braucht:

from dateutil.parser import parse

date_str1 = '2023-03-01'
date_str2 = 'March 1, 2023'

date_obj1 = parse(date_str1)
date_obj2 = parse(date_str2)

print(date_obj1)  # Output: 2023-03-01 00:00:00
print(date_obj2)  # Output: 2023-03-01 00:00:00

Kann ich Strings in Datums-/Zeitobjekte umwandeln und dabei verschiedene Zeitzonen berücksichtigen?

Ja, du kannst Zeitzonen mit der Bibliothek „pytz“ zusammen mit „datetime“ verwalten. Zuerst machst du aus der Zeichenfolge ein Datums-/Zeitobjekt und fügst dann mit pytz.timezone() eine Zeitzone hinzu:

from datetime import datetime
import pytz

date_str = '2023-03-01 14:30:00'
date_format = '%Y-%m-%d %H:%M:%S'
date_obj = datetime.strptime(date_str, date_format)

# Set time zone
timezone = pytz.timezone('US/Eastern')
date_obj_tz = timezone.localize(date_obj)

print(date_obj_tz)  # Output: 2023-03-01 14:30:00-05:00

Was ist der Unterschied zwischen datetime.strptime() und datetime.fromisoformat()?

Mit datetime.strptime() kannst du eine eigene Formatzeichenfolge angeben, um nicht standardmäßige oder unterschiedliche Datumsformate zu analysieren.

datetime.fromisoformat() ist extra dafür gemacht, Datumszeichenfolgen im ISO 8601-Format (z. B. „2023-03-01T14:30:00“) zu analysieren. Es ist einfacher zu verwenden, wenn deine Zeichenfolgen genau dem ISO 8601-Standard entsprechen:

from datetime import datetime

iso_date_str = '2023-03-01T14:30:00'
date_obj = datetime.fromisoformat(iso_date_str)
print(date_obj)  # Output: 2023-03-01 14:30:00

Arunn Thevapalan's photo
Author
Arunn Thevapalan
LinkedIn
Twitter

Als Senior Data Scientist konzipiere, entwickle und implementiere ich umfangreiche Machine-Learning-Lösungen, um Unternehmen dabei zu helfen, bessere datengestützte Entscheidungen zu treffen. Als Data-Science-Autorin teile ich Erfahrungen, Karrieretipps und ausführliche praktische Anleitungen.

Themen

Mehr über Python erfahren

Kurs

Manipulating Time Series Data in Python

4 Std.
67.2K
In this course you'll learn the basics of working with time series data.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Lernprogramm

Python-Tutorial zum Verknüpfen von Zeichenfolgen

Lerne verschiedene Methoden zum Verknüpfen von Zeichenfolgen in Python kennen, mit Beispielen, die jede Technik zeigen.
DataCamp Team's photo

DataCamp Team

Lernprogramm

So kürzt man eine Zeichenfolge in Python: Drei verschiedene Methoden

Lerne die Grundlagen zum Entfernen von führenden und nachfolgenden Zeichen aus einer Zeichenfolge in Python.
Adel Nehme's photo

Adel Nehme

Lernprogramm

Wie man in Python eine Liste in eine Zeichenfolge umwandelt

Lerne in diesem kurzen Tutorial, wie du in Python eine Liste in eine Zeichenfolge umwandelst.
Adel Nehme's photo

Adel Nehme

Lernprogramm

Python JSON-Daten: Ein Leitfaden mit Beispielen

Lerne, wie man mit JSON in Python arbeitet, einschließlich Serialisierung, Deserialisierung, Formatierung, Leistungsoptimierung, Umgang mit APIs und Verständnis der Einschränkungen und Alternativen von JSON.
Moez Ali's photo

Moez Ali

Lernprogramm

Loop-Schleifen in Python-Tutorial

Lerne, wie du For-Schleifen in Python umsetzt, um eine Sequenz oder die Zeilen und Spalten eines Pandas-DataFrame zu durchlaufen.
Aditya Sharma's photo

Aditya Sharma

Lernprogramm

Fibonacci-Folge in Python: Lerne und entdecke Programmiertechniken

Finde raus, wie die Fibonacci-Folge funktioniert. Schau dir die mathematischen Eigenschaften und die Anwendungen in der echten Welt an.
Laiba Siddiqui's photo

Laiba Siddiqui

Mehr anzeigenMehr anzeigen