In diesem Artikel habe ich darüber geschrieben, wie das aktuelle Datum und die aktuelle Uhrzeit in Python unter Berücksichtigung des Zeitunterschieds abgerufen werden.
Ich habe festgestellt, wie es sowohl in Python2 als auch in Python3 funktioniert, wobei nur das Standardmodul (datetime
) verwendet wird.
Die detaillierte Beschreibung der verschiedenen Methoden und Objekte des Moduls "datetime" entfällt.
Ich habe eine Web-App in Python implementiert und versucht, sie auf Heroku auszuführen. Ich versuche, eine Funktion zu implementieren und muss das aktuelle Datum und die aktuelle Uhrzeit abrufen.
Wenn Sie einfach versuchen, die aktuelle Uhrzeit abzurufen, erhalten Sie die Systemzeit des Heroku-Servers. Auf dem Heroku-Server läuft die Systemzeit um +00: 00 (UTC).
Was ist, wenn Sie die App nur in Japan ausführen und nur die Systemzeit von Heroku verwenden? Wenn die Funktion von der App bedient wird und die Uhrzeit erfasst wird, ist es 12:00 Uhr japanischer Zeit. Dann ist Herokus Systemzeit 3:00. Die japanische Zeit ist 12:00 Uhr, aber die App verarbeitet sie als 3:00 Uhr.
Hmmm, das ist nicht gut ... (Besonders für Kalender und Erinnerungen.) Wenn Sie nur 9 Stunden hinzufügen, wird dies sofort behoben, aber ich möchte sicherstellen, dass das genaue Datum und die Uhrzeit ohne Abhängigkeit von der Zeitzoneneinstellung des Servers zurückgegeben werden.
Zuerst zeige ich Ihnen den gesamten Code, der jetzt funktioniert.
import datetime
# UTC (Vereinbarung Weltzeit)Holen Sie sich die Zeit von
time_now_utc = datetime.datetime.utcnow()
print(time_now_utc)
# 2020-10-10 14:51:22.910110
#Japan ist 9 Stunden vor UTC
time_dt_ja = datetime.timedelta(hours=9)
print(time_dt_ja)
# 9:00:00
#Wenn Sie UTC um 9 Stunden verlängern, ist es Zeit für Japan.
time_now_ja = time_now_utc + time_dt_ja
print(time_now_ja)
# 2020-10-10 23:51:22.910110
Wenn Sie Datum und Uhrzeit mit "datetime.datetime.utcnow ()" erhalten, erhalten Sie das gleiche Ergebnis (UTC), unabhängig davon, ob die Zeitzone der laufenden Maschine Japan, Großbritannien oder die USA ist. (Wenn es sich um "datetime.datetime.now ()" handelt, ändert sich das Ergebnis abhängig von der Zeitzoneneinstellung des Betriebssystems.) Dadurch werden zunächst die Unterschiede in den Zeitzoneneinstellungen der bedienenden Maschinen ausgeglichen.
time_now_utc = datetime.datetime.utcnow()
print(time_now_utc)
# 2020-10-10 14:51:22.910110
type(time_now_utc)
# <class 'datetime.datetime'>
Hier erhalten Sie das Objekt datetime
.
timedelta
Bereiten Sie das Objekt vor.
Das datetime
-Objekt ist das ** Zeitinformationsobjekt ** und das timedelta
ist das ** Zeitinformationsobjekt **.
time_dt_test = datetime.timedelta(days=1, seconds=1, microseconds=1, milliseconds=1, minutes=1, hours=1, weeks=1)
print(time_dt_test)
# 8 days, 1:01:01.001001
type(time_dt_test)
# <class 'datetime.timedelta'>
Wenn Sie auf diese Weise den Tag (Woche, Tag) oder die Stunde (Stunde, Minute, Sekunde) angeben, werden diese in Tages- und Zeitinformationen umgewandelt.
Die Objekte "datetime" und "timedelta" können mit "+" - "betrieben werden. Durch Hinzufügen von 9 Stunden zu UTC wird es also Japan-Zeit
time_now_ja = time_now_utc + time_dt_ja
print(time_now_ja)
# 2020-10-10 23:51:22.910110
Verwenden Sie danach die entsprechende Methode "datetime".
print(time_now_ja.strftime("%Y Jahr%m Monat%d Tag"))
#10. Oktober 2020
In Bezug auf "strftime ()" scheint es verschiedene Formatcodes sowie "% Y", "% d", "% m" zu geben. Einzelheiten finden Sie in der offiziellen Dokumentation https://docs.python.org/ja/3/library/datetime.html#strftime-strptime-behavior
Laut offizieller Dokumentation ist das Abrufen der UTC besser als "datetime.datetime.utcnow ()"
datetime.datetime.now (datetime.timezone.utc)
scheint empfohlen zu werden.
https://docs.python.org/ja/3/library/datetime.html
Es scheint jedoch, dass es in Python2 kein Zeitzonenobjekt gibt.
(Aber die Zeitzonenbeziehung ist wahrscheinlich viel intelligenter mit dem Zeitzonenobjekt zu implementieren.)
Recommended Posts