Daten und Zeiten

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Das Python-datetime-Modul bietet eine Reihe von Klassen zum Manipulieren von Daten und Zeiten. In diesem Lab werden wir einige der am häufigsten verwendeten Klassen und Funktionen aus diesem Modul erkunden und lernen, wie wir sie verwenden, um eine Vielzahl von Aufgaben durchzuführen, wie das Arbeiten mit Daten, Zeiten und Zeitdifferenzen.

Errungenschaften

  • datetime-Modul

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/ModulesandPackagesGroup -.-> python/using_packages("Using Packages") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/ObjectOrientedProgrammingGroup -.-> python/classes_objects("Classes and Objects") python/ObjectOrientedProgrammingGroup -.-> python/constructor("Constructor") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") python/PythonStandardLibraryGroup -.-> python/date_time("Date and Time") subgraph Lab Skills python/strings -.-> lab-75{{"Daten und Zeiten"}} python/function_definition -.-> lab-75{{"Daten und Zeiten"}} python/importing_modules -.-> lab-75{{"Daten und Zeiten"}} python/using_packages -.-> lab-75{{"Daten und Zeiten"}} python/standard_libraries -.-> lab-75{{"Daten und Zeiten"}} python/classes_objects -.-> lab-75{{"Daten und Zeiten"}} python/constructor -.-> lab-75{{"Daten und Zeiten"}} python/catching_exceptions -.-> lab-75{{"Daten und Zeiten"}} python/date_time -.-> lab-75{{"Daten und Zeiten"}} end

Das datetime-Modul importieren

Um mit dem datetime-Modul zu arbeiten, müssen wir es zuerst importieren.

Öffnen Sie eine neue Python-Interpreter-Sitzung:

python3

Dies kann mit der folgenden Codezeile erreicht werden:

import datetime

Arbeiten mit Daten

Das datetime-Modul bietet die date-Klasse zum Arbeiten mit Daten. Um ein date-Objekt zu erstellen, das ein bestimmtes Datum repräsentiert, können wir den date()-Konstruktor verwenden, der drei Argumente akzeptiert: das Jahr, den Monat und den Tag. Beispielsweise:

d = datetime.date(2021, 12, 31)
print(d)

Dies wird ein date-Objekt erstellen, das den 31. Dezember 2021 repräsentiert, und es im Format "YYYY-MM-DD" ausgeben.

Arbeiten mit Zeiten

Neben Daten bietet das datetime-Modul auch die time-Klasse zum Arbeiten mit Zeiten. Um ein time-Objekt zu erstellen, das eine bestimmte Zeit repräsentiert, können wir den time()-Konstruktor verwenden, der drei Argumente akzeptiert: die Stunde, die Minute und die Sekunde. Beispielsweise:

t = datetime.time(12, 30, 15)
print(t)

Dies wird ein time-Objekt erstellen, das 12:30:15 Uhr (mittags) repräsentiert, und es im Format "HH:MM:SS" ausgeben.

Kombinieren von Daten und Zeiten

Um sowohl mit einem Datum als auch mit einer Zeit zu arbeiten, können wir die datetime-Klasse verwenden, die ein Datum und eine Zeit kombiniert. Um ein datetime-Objekt zu erstellen, das ein bestimmtes Datum und eine bestimmte Zeit repräsentiert, können wir den datetime()-Konstruktor verwenden, der sechs Argumente akzeptiert: das Jahr, den Monat, den Tag, die Stunde, die Minute und die Sekunde. Beispielsweise:

dt = datetime.datetime(2021, 12, 31, 12, 30, 15)
print(dt)

Dies wird ein datetime-Objekt erstellen, das den 31. Dezember 2021 um 12:30:15 Uhr (mittags) repräsentiert, und es im Format "YYYY-MM-DD HH:MM:SS" ausgeben.

Arbeiten mit Zeitdifferenzen

Neben der Arbeit mit bestimmten Daten und Zeiten bietet das datetime-Modul auch die timedelta-Klasse zum Arbeiten mit Zeitdauern. Ein timedelta-Objekt repräsentiert eine Zeitdauer und kann zu einem datetime-Objekt hinzugefügt oder subtrahiert werden, um ein neues datetime-Objekt zu erzeugen. Beispielsweise:

d1 = datetime.date(2021, 12, 31)
d2 = d1 + datetime.timedelta(days=1)
print(d2)

Dies wird ein timedelta-Objekt erstellen, das einen Tag repräsentiert, es zum date-Objekt d1 hinzufügen und ein neues date-Objekt erzeugen, das den 1. Januar 2022 repräsentiert, und es im Format "YYYY-MM-DD" ausgeben.

Formatieren von Daten und Zeiten

Das datetime-Modul bietet die strftime()-Methode, die verwendet werden kann, um ein datetime-Objekt als Zeichenfolge zu formatieren. Diese Methode nimmt eine Formatzeichenfolge als Argument entgegen, die das gewünschte Format der Ausgabestring angibt. Beispielsweise formatiert der folgende Code ein datetime-Objekt als Zeichenfolge im Format "YYYY-MM-DD HH:MM:SS":

dt = datetime.datetime(2021, 12, 31, 12, 30, 15)
s = dt.strftime('%Y-%m-%d %H:%M:%S')
print(s)

Es wird "2021-12-31 12:30:15" ausgegeben.

Analysieren von Daten und Zeiten aus Zeichenfolgen

Das datetime-Modul bietet auch die Klassenmethode strptime(), die verwendet werden kann, um eine Zeichenfolge zu analysieren und ein datetime-Objekt zu erstellen. Diese Methode nimmt zwei Argumente entgegen: die zu analysierende Zeichenfolge und eine Formatzeichenfolge, die das erwartete Format der Eingabezeichenfolge angibt. Beispielsweise analysiert der folgende Code eine Zeichenfolge im Format "YYYY-MM-DD HH:MM:SS" und erstellt ein datetime-Objekt:

s = '2021-12-31 12:30:15'
dt = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
print(dt)

Es wird "2021-12-31 12:30:15" ausgegeben.

Die Formatzeichenfolge ist eine Zeichenfolge von Zeichen, die den verschiedenen Teilen eines Datums und einer Zeit entsprechen, wie das Jahr, der Monat, der Tag, die Stunde, die Minute und die Sekunde.

Hier sind einige der am häufigsten verwendeten Zeichen in der Formatzeichenfolge:

  • %Y: Jahr mit Jahrhundert als Dezimalzahl. Beispielsweise "2022"
  • %m: Monat als nullaufgefüllte Dezimalzahl. Beispielsweise "01" für Januar, "12" für Dezember
  • %d: Tag des Monats als nullaufgefüllte Dezimalzahl. Beispielsweise "01" für den ersten Tag des Monats, "31" für den letzten Tag des Monats
  • %H: Stunde (24-Stunden-Uhr) als nullaufgefüllte Dezimalzahl. Beispielsweise "00" für Mitternacht, "12" für Mittag, "23" für 11 Uhr abends
  • %M: Minute als nullaufgefüllte Dezimalzahl. Beispielsweise "00" für den Beginn der Stunde, "30" für halb vor der Stunde
  • %S: Sekunde als nullaufgefüllte Dezimalzahl. Beispielsweise "00" für den Beginn der Minute, "59" für das Ende der Minute

Neben diesen Zeichen kann die Formatzeichenfolge auch literale Zeichen enthalten, die mit der Eingabezeichenfolge übereinstimmen müssen. Beispielsweise wird die folgende Formatzeichenfolge ein Datum im Format "YYYY-MM-DD" entsprechen:

fmt = '%Y-%m-%d'

Die strptime()-Methode wird dann diese Formatzeichenfolge verwenden, um die Eingabezeichenfolge zu analysieren und das Jahr, Monat und Tag daraus zu extrahieren.

Es ist wichtig zu beachten, dass die Formatzeichenfolge genau mit der Eingabezeichenfolge übereinstimmen muss, andernfalls wird eine Ausnahme ausgelöst. Wenn Sie sich nicht sicher sind, über das Format der Eingabezeichenfolge, können Sie die try- und except-Anweisungen verwenden, um alle potenziellen Ausnahmen zu behandeln, die auftreten können.

Außerdem wird die strptime()-Methode aufgrund einiger Probleme wie dass sie nicht Thread-sicher ist und langsam ist, nicht allgemein empfohlen. Es wird empfohlen, die dateutil.parser.parse()-Funktion zu verwenden, die flexibler und effizienter ist.

Arbeiten mit Zeitzonen

Das datetime-Modul bietet auch die pytz-Bibliothek, die verwendet werden kann, um mit Zeitzonen zu arbeiten. Um sie zu verwenden, müssen Sie sie zunächst installieren, indem Sie pip install pytz in Ihrer Befehlszeile ausführen.

Nach der Installation können Sie die pytz.timezone-Funktion verwenden, um ein Zeitzonenobjekt für eine bestimmte Zeitzone zu erstellen, beispielsweise:

from datetime import datetime
import pytz

dt = datetime.now(pytz.timezone('US/Pacific'))
print(dt)

Dies wird ein datetime-Objekt mit dem aktuellen Datum und der aktuellen Zeit in der Zeitzone Pacific Time (US) erstellen und es im Format "YYYY-MM-DD HH:MM:SS-TZ" ausgeben.

Zusammenfassung

In diesem Lab haben wir einige der am häufigsten verwendeten Klassen und Funktionen des Python datetime-Moduls untersucht und gelernt, wie wir sie verwenden, um eine Vielzahl von Aufgaben durchzuführen, wie das Arbeiten mit Daten, Zeiten und Zeitdifferenzen. Wir haben gesehen, wie man Datums-, Zeit- und datetime-Objekte mit den entsprechenden Konstruktoren erstellt und wie man sie kombiniert, um bestimmte Zeitpunkte zu repräsentieren. Wir haben auch über die timedelta-Klasse gelernt, die verwendet werden kann, um Zeitdauern zu repräsentieren, und wie man sie verwendet, um arithmetische Operationen auf datetime-Objekten durchzuführen.

Neben den in diesem Lab bereitgestellten Beispielen bietet das datetime-Modul auch eine Reihe weiterer Funktionen und Klassen für die Arbeit mit Zeitzonen, das Formatieren von Daten und Zeiten und das Analysieren von Daten und Zeiten aus Zeichenfolgen. Es ist ein leistungsstarkes und vielseitiges Modul, das verwendet werden kann, um eine Vielzahl von zeitbezogenen Problemen in Python zu lösen.

In diesem Lab haben wir einige der erweiterteren Funktionen des Python datetime-Moduls untersucht, einschließlich der Umwandlung von Datums- und Zeitformaten und der Zeitzonenumwandlung. Wir haben gelernt, wie man die strftime()- und strptime()-Methoden verwendet, um Daten und Zeiten als Zeichenfolgen zu formatieren und zu analysieren, und wie man die pytz-Bibliothek verwendet, um mit Zeitzonen zu arbeiten. Mit diesen Tools sollten Sie in der Lage sein, effektiv mit Daten und Zeiten in Python zu arbeiten und eine Vielzahl von zeitbezogenen Problemen zu lösen.