Informationen zu Python-Datums- und Zeitzone

Ich war verwirrt, als ich mich mit datetime im Hinblick auf die Zeitzone befasste, daher werde ich es für mich selbst zusammenfassen.

Naive,Aware

Datums- und Uhrzeitobjekte in Python werden in die folgenden zwei Typen eingeteilt. Der grobe Unterschied ist "mit oder ohne Zeitzoneninformationen".

Wenn Sie in einem Programm eine zeitzonenbezogene Verarbeitung durchführen möchten, müssen Sie daher das Aware-Objekt verwenden.

Objekt

Es gibt vier Hauptobjekte unten.

Je nachdem, wie jedes Objekt erstellt wird, kann es naiv oder bewusst sein. Zum Beispiel

>>> print('Python %s on %s' % (sys.version, sys.platform))
Python 3.7.4 (default, Oct 10 2019, 12:40:25) 
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin

>>> import datetime
>>> aware_dt = datetime.datetime.now(tz=datetime.timezone.utc)
>>> aware_dt
datetime.datetime(2020, 4, 4, 5, 49, 51, 291393, tzinfo=datetime.timezone.utc)
>>> naive_dt = datetime.datetime.utcnow()
>>> naive_dt
datetime.datetime(2020, 4, 4, 5, 50, 8, 499521)
>>> aware_dt.tzinfo
datetime.timezone.utc
>>> print(naive_dt.tzinfo)
<class 'NoneType'>

Beim Erstellen der aktuellen utc-Zeit als Objekt gibt es eine Methode zum Festlegen der Zeitzone und eine Methode zum Nichtgeben.

Methoden, die sich auf das datetime-Objekt beziehen

strptime

Eine Methode, die eine Zeichenfolge, die ein Datum darstellt, zu einem Datums- / Uhrzeittyp macht.

>>> str_dt = '2020-3-01 10:11:12'
>>> strp_dt = datetime.datetime.strptime(str_dt, "%Y-%m-%d %H:%M:%S")
>>> strp_dt
datetime.datetime(2020, 3, 1, 10, 11, 12)
>>> print(type(strp_dt.tzinfo))
<class 'NoneType'>

Das erstellte Objekt enthält keine Zeitzonenattribute. Wenn die Zeichenfolge vor der Konvertierung jedoch eine Zeitzone enthält und das Format entsprechend eingestellt ist

>>> str_dt_utc = '2020-3-01 10:11:12+00:00'
>>> strp_dt_utc = datetime.datetime.strptime(str_dt_utc, "%Y-%m-%d %H:%M:%S%z")
>>> strp_dt_utc
datetime.datetime(2020, 3, 1, 10, 11, 12, tzinfo=datetime.timezone.utc)
>>> str_dt_jst = '2020-3-01 10:11:12+09:00'
>>> strp_dt_jst = datetime.datetime.strptime(str_dt_jst, "%Y-%m-%d %H:%M:%S%z")
>>> strp_dt_jst
datetime.datetime(2020, 3, 1, 10, 11, 12, tzinfo=datetime.timezone(datetime.timedelta(seconds=32400)))

Es scheint, dass ein Datum / Uhrzeit-Objekt mit dem Zeitzonenattribut wie in erstellt wird.

astimezone

Eine Methode, die ein Datum / Uhrzeit-Objekt gemäß den angegebenen Zeitzoneninformationen konvertiert.

>>> strp_dt.astimezone(datetime.timezone.utc)
datetime.datetime(2020, 3, 1, 1, 11, 12, tzinfo=datetime.timezone.utc)

Der Zeitunterschied zwischen JST und UTC, -9 Stunden, wurde wiedergegeben, und das Datum / Uhrzeit-Objekt mit hinzugefügtem tzinfo wurde zurückgegeben. (Ist dies ein Vergleich mit der lokalen Zeitzone?)

replace

Eine Methode, die die Zeitzone eines Datetime-Objekts in die angegebene Zeitzone konvertiert.

>>> strp_dt.replace(tzinfo=datetime.timezone.utc)
datetime.datetime(2020, 3, 1, 10, 11, 12, tzinfo=datetime.timezone.utc)

Beachten Sie, dass im Vergleich zu Astimezone nur Tzinfo umgewandelt wird.

In Bezug auf die Erstellung des Zeitzonenobjekts können Sie es einfach wie "datetime.timezone (timedelta (Stunden = + 9)," JST ")" erstellen oder ein Modul eines Drittanbieters (pytz, dateutil) verwenden. Es gibt verschiedene Methoden.

Recommended Posts

Informationen zu Python-Datums- und Zeitzone
Informationen zu Python-Objekten und -Klassen
Informationen zu Python-Variablen und -Objekten
Über Python, len () und randint ()
Über Python und reguläre Ausdrücke
Informationen zu Python- und Betriebssystemoperationen
Python # Über Referenz und Kopie
Über Python sort () und reverse ()
Über _ und __
Über Python-Diktat und sortierte Funktionen
Über Python und Cython dtype
Über Python Pickle (cPickle) und Marschall
[Python] Über Executor und zukünftige Klassen
Über Python, aus und importieren, als
Über Python-Slices
Über die Einschlussnotation von Python
Über Python tqdm.
Über Python, Klasse
Informationen zur Python-Vererbung
Über Python, range ()
Über Python Decorator
Python-Zeitzonenbehandlung
Eine Geschichte über Python Pop und Append
Informationen zur Python-Referenz
Über Python-Dekorateure
[Python] Über Multi-Prozess
Apropos alte und neue Klassen in Python
Apropos Python-Klassenattribute und Metaklassen
Denken Sie an Suchvorgänge mit Tiefenpriorität und Breitenpriorität in Python
Über den Unterschied zwischen "==" und "is" in Python
[Python3] Lesen und Schreiben mit datetime isoformat mit json
Eine Geschichte über das Ändern von Python und das Hinzufügen von Funktionen
[Python] Erfahren Sie mehr über asynchrone Programmierung und Ereignisschleifen
Über flache und tiefe Kopien von Python / Ruby
[Python] Klassentyp und Verwendung des datetime-Moduls
[Python] Vergleichen von Datum und Uhrzeit mit der hinzugefügten Zeitzone
[Python] Komprimieren und dekomprimieren
Über Python für Schleife
Über Klasse und Instanz
Über Funktionsargumente (Python)
Python- und Numpy-Tipps
[Python] Pip und Wheel
Python Iterator und Generator
Python-Pakete und -Module
Vue-Cli- und Python-Integration
Ruby, Python und Map
Über Cumprod und Cummax
Über Python für ~ (Bereich)
Python-Eingabe und Ausgabe
[Python] Memo Über Fehler
Python und Ruby teilen sich
Informationen zur Python-Entwicklungsumgebung
Python: Über Funktionsargumente
Python, über die Ausnahmebehandlung
Python Unix-Time <-> Datetime-Konvertierung
Über Python Pyramid Traversal
Über Python3 ... (Ellipsenobjekt)