Heim > Artikel > Backend-Entwicklung > Umgang mit Zeitzonen in Python
Eine Zeitzone ist ein geografisches Gebiet, in dem alle Uhren auf die gleiche Standardzeit eingestellt sind, aber verschiedene Orte aufgrund politischer Entscheidungen, historischer Zeitzonenänderungen, Unterschiede in der Sommerzeit und anderer Faktoren unterschiedliche Zeitversätze aufweisen können. Das Datetime-Modul und die Pytz-Bibliothek von Python stellen eine Reihe von Klassen für die Arbeit mit Datumsangaben, Uhrzeiten und Zeitzonen bereit. Das Zeitzonenmanagement ist in der Softwareentwicklung sehr wichtig, da es die Genauigkeit der vom Programm bereitgestellten Ergebnisse beeinflusst. In diesem Artikel wird anhand von drei kommentierten Beispielen vorgestellt, wie Sie die Module datetime und pytz verwenden, um Zeitzonen in Python zu verwalten.
Sie müssen die Datetime- und Pytz-Module von Python verwenden, um Zeitzonen zu verwalten. Die Zeitzonenfunktionalität wird von der Paketbibliothek pytz eines Drittanbieters bereitgestellt, während das Modul datetime Klassen für die Handhabung von Datums- und Uhrzeitangaben bereitstellt.
pip install pytz pip install datetime
Das datetime-Modul bietet mehrere Klassen für die Arbeit mit Datums- und Uhrzeitangaben. Die Hauptklassen sind date, tzinfo, timedelta, time und datetime.
Die Datetime-Klasse stellt ein bestimmtes Datum und eine bestimmte Uhrzeit dar und verfügt über mehrere Attribute, darunter Jahr, Monat, Tag, Stunde, Minute, Sekunde und Mikrosekunde.
Es gibt auch viele Methoden zur Verarbeitung von Datetime-Objekten in der Datetime-Klasse. Wir können die Funktion replace() verwenden, um die Eigenschaften eines oder mehrerer Datetime-Objekte zu ändern, während andere Eigenschaften davon unberührt bleiben.
Datetime-Objekte können mit der Funktion strftime() auf eine bestimmte Weise als Zeichenfolgen formatiert werden.
Die timezone()-Funktion der pytz-Bibliothek kann zum Festlegen der Zeitzone in Python verwendet werden. Das datetime-Modul kann das von der timezone()-Funktion zurückgegebene Zeitzonenobjekt verwenden, das beispielsweise einen String akzeptiert, der den Namen der Zeitzone angibt. Wir können den folgenden Code verwenden, um die Zeitzone auf „US/Eastern“ festzulegen −
import pytz from datetime import datetime eastern = pytz.timezone('US/Eastern') dt = datetime.now(eastern)
Die Datetime-Klasse bietet jedoch keine integrierte Unterstützung für Zeitzonen. Das Pytz-Modul stellt die Zeitzonenklasse bereit, die ein Zeitzonenobjekt darstellt. Ein Zeitzonenobjekt enthält Informationen über den Zeitzonenversatz, die Sommerzeit Zeitregeln und Zeitzonenname
Das pytz-Modul bietet außerdem mehrere Funktionen für die Arbeit mit Zeitzonen, einschließlich localize() und normalize(). Die Funktion localize() wird verwendet, um die Zeitzone für ein Datetime-Objekt festzulegen, während die Funktion normalize() verwendet wird wird verwendet, um ein Datetime-Objekt von einer Zeitzone in eine andere zu konvertieren
AlgorithmusÄndern Sie die Zeitzone mit der Funktion astimezone()
Konvertieren Sie ein Datetime-Objekt in eine Zeichenfolge mit der Funktion strftime()
für eine bestimmte ZeitzoneEinstellen der Zeitzone
Erstellen Sie ein Zeitzonenobjekt mit der Funktion pytz.timezone() und weisen Sie es einer Variablen zu
import pytz from datetime import datetime # Create a timezone object for US/Eastern eastern_tz = pytz.timezone('US/Eastern') now = datetime.now() now_eastern = eastern_tz.localize(now) print(now_eastern)Ausgabe
2023-04-17 16:58:31.317459-04:00
pytz.timezone()
ein Zeitzonenobjekt für die USA/Ost, erstellen Sie mitlocalize() die Zeitzone für das Datetime-Objekt fest. Methode des Zeitzonenobjekts Zeit zwischen Zeitzonen umrechnen Mit datetime und pytz können wir die astimezone()-Methode des datetime-Objekts verwenden.
Beispielimport pytz from datetime import datetime # Create a timezone object for US/Eastern eastern_tz = pytz.timezone('US/Eastern') now = datetime.now() now_eastern = eastern_tz.localize(now) # Convert the datetime object to Pacific timezone pacific_tz = pytz.timezone('US/Pacific') now_pacific = now_eastern.astimezone(pacific_tz) print(now_pacific)
2023-04-17 13:58:41.599015-07:00Erstellen Sie mit pytz ein Zeitzonenobjekt für USA/Ost. Erstellen Sie ein Datetime-Objekt der aktuellen Uhrzeit, indem Sie die Methode timezone() aufrufen. Verwenden Sie nach dem Aufruf von now() die Funktion
pytz.timezone(), um ein anderes Zeitzonenobjekt für USA/Pazifik zu instanziieren, und verwenden Sie die astimezone()-Methode des Datetime-Objekts, um das Datetime-Objekt in die pazifische Zeitzone zu konvertieren.
Formatieren Sie die Zeit mithilfe der ZeitzoneDie Formatierung wird mit der strftime()-Methode des datetime-Objekts einfacher.
Beispiel
import pytz from datetime import datetime # Create a timezone object for US/Eastern eastern_tz = pytz.timezone('US/Eastern') now = datetime.now() now_eastern = eastern_tz.localize(now) # Add formatting fmt = '%Y-%m-%d %H:%M:%S %Z%z' now_str = now_eastern.strftime(fmt) print(now_str)Ausgabe
2023-04-17 16:59:06 EDT-0400
'%Y-%m- %d%H:%M:%S%Z%z'
gibt das Jahr, den Monat, den Tag, die Stunde und die Minute an , und Sekunde, sowie die Zeitzonenabkürzung und den ZeitzonenversatzIn diesem Artikel werden die Kernkonzepte und -praktiken der Arbeit mit Zeitzonen in Python vorgestellt. Nachdem die Bedeutung von Zeitzonen in der Programmierung erörtert wurde, wird erläutert, wie Zeitzonen in der Softwareentwicklung funktionieren. Anschließend werden die erforderlichen Bibliotheken und Pakete, einschließlich pytz und datetime, besprochen und Installationsanweisungen bereitgestellt. Anschließend wird vorgestellt, wie Zeitzonen in Python funktionieren, einschließlich der Festlegung von Zeitzonen, der Konvertierung der Zeit zwischen Zeitzonen und der Verwendung von Zeitzonen zur Formatierung der Zeit. Abschließend wird für jede Aufgabe Beispielcode bereitgestellt, zusammen mit Anleitungen zur Lösung häufiger Python-Zeitzonenprobleme.
Das obige ist der detaillierte Inhalt vonUmgang mit Zeitzonen in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!