ANMERKUNG -- Ab 2020 sollten Sie nicht mehr .utcnow()
oder .utcfromtimestamp(xxx)
. Da Sie vermutlich auf Python3 umgestiegen sind, sollten Sie zeitzonenbewusste Datetime-Objekte verwenden.
>>> from datetime import timezone
>>>
>>> # alternative to '.utcnow()'
>>> dt_now = datetime.datetime.now(datetime.timezone.utc)
>>>
>>> # alternative to '.utcfromtimestamp()'
>>> dt_ts = datetime.fromtimestamp(1571595618.0, tz=timezone.utc)
für Einzelheiten siehe: siehe: https://blog.ganssle.io/articles/2019/11/utcnow.html
ursprüngliche Antwort (von 2010):
Das Modul datetime utcnow() kann verwendet werden, um die aktuelle UTC-Zeit zu ermitteln.
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
Wie der oben von Tom erwähnte Link: http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/ sagt:
UTC ist eine Zeitzone ohne Sommerzeit und trotzdem eine Zeitzone ohne Konfigurationsänderungen in der Vergangenheit.
Messen und speichern Sie die Zeit immer in UTC .
Wenn Sie aufzeichnen müssen, wo die Zeit genommen wurde, bewahren Sie dies separat auf. Nicht speichern Sie die Ortszeit und die Zeitzoneninformation!
ANMERKUNG - Wenn Ihre Daten in einer Region liegen, in der die Sommerzeit gilt, verwenden Sie pytz
und sehen Sie sich die Antwort von John Millikin an.
Wenn Sie die UTC-Zeit aus einer gegebenen Zeichenkette ermitteln wollen und das Glück haben, in einer Region der Welt zu sein, in der entweder keine Sommerzeit gilt oder Sie Daten haben, die nur von der UTC-Zeit abweichen, ohne dass die Sommerzeit angewendet wird:
--> Verwendung der Ortszeit als Grundlage für den Offset-Wert:
>>> # Obtain the UTC Offset for the current system:
>>> UTC_OFFSET_TIMEDELTA = datetime.datetime.utcnow() - datetime.datetime.now()
>>> local_datetime = datetime.datetime.strptime("2008-09-17 14:04:00", "%Y-%m-%d %H:%M:%S")
>>> result_utc_datetime = local_datetime + UTC_OFFSET_TIMEDELTA
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
--> Oder von einem bekannten Offset aus mit datetime.timedelta():
>>> UTC_OFFSET = 10
>>> result_utc_datetime = local_datetime - datetime.timedelta(hours=UTC_OFFSET)
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
UPDATE:
Seit Python 3.2 datetime.timezone
verfügbar ist. Sie können ein zeitzonenabhängiges Datetime-Objekt mit dem folgenden Befehl erzeugen:
import datetime
timezone_aware_dt = datetime.datetime.now(datetime.timezone.utc)
Wenn Sie bereit sind, sich mit Zeitzonenumstellungen zu befassen, lesen Sie dies:
https://medium.com/@eleroy/10-dinge-die-man-wissen-muss-über-datum-und-zeit-in-python-mit-datenzeit-pytz-dateutil-timedelta-309bfbafb3f7