Ich denke, die Hauptantwort ist immer noch nicht so klar, und es lohnt sich, sich die Zeit zu nehmen, um Zeit und Zeitzonen zu verstehen .
Das Wichtigste im Umgang mit Zeit ist, dass Zeit relativ ist !
2017-08-30 13:23:00
: (eine naive Datumszeit), repräsentiert eine Ortszeit irgendwo auf der Welt, aber beachten Sie, dass 2017-08-30 13:23:00
in London NICHT DIE GLEICHE ZEIT ist wie 2017-08-30 13:23:00
in San Francisco.
Da dieselbe Zeitzeichenfolge je nach Standort auf der Welt als unterschiedliche Zeitpunkte interpretiert werden kann, ist ein Absolutwert erforderlich Zeitbegriff .
Ein UTC-Zeitstempel ist eine Zahl in Sekunden (oder Millisekunden) ab Epoche (definiert als 1 January 1970 00:00:00
atGMT
Zeitzone +00: 00 - Offset).
Die Epoche ist in der GMT-Zeitzone verankert und daher ein absoluter Zeitpunkt. Ein UTC-Zeitstempel , der ein Versatz von einer absoluten Zeit ist, definiert daher einen absoluten Zeitpunkt .
Dadurch ist es möglich, Ereignisse rechtzeitig zu bestellen.
Ohne Zeitzoneninformationen ist die Zeit relativ und kann nicht in einen absoluten Zeitbegriff umgewandelt werden, ohne einen Hinweis darauf zu geben, in welcher Zeitzone die naive Datumszeit verankert werden soll.
Welche Arten von Zeit werden im Computersystem verwendet?
naive datetime : normalerweise zur Anzeige in der Ortszeit (dh im Browser), wo das Betriebssystem dem Programm Zeitzoneninformationen bereitstellen kann.
UTC-Zeitstempel : Ein UTC-Zeitstempel ist, wie oben erwähnt, ein absoluter Zeitpunkt, der jedoch in einer bestimmten Zeitzone verankert ist. Daher kann ein UTC-Zeitstempel in jeder Zeitzone in eine Datumszeit konvertiert werden, enthält jedoch keine Zeitzoneninformationen. Was bedeutet das? Das bedeutet, dass 1504119325 2017-08-30T18:55:24Z
oder 2017-08-30T17:55:24-0100
oder auch entspricht 2017-08-30T10:55:24-0800
. Es sagt Ihnen nicht, woher die aufgezeichnete Datums- und Uhrzeitangabe stammt. Es ist in der Regel auf der Serverseite zu zeichnen Ereignisse (Protokolle, etc ...) oder verwendet eine konvertieren Zeitzone bewusst Datetime zu einem absoluten Zeitpunkt und Rechenzeitdifferenzen .
ISO-8601-Datums- / Uhrzeitzeichenfolge : ISO-8601 ist ein standardisiertes Format zum Aufzeichnen von Datums- und Uhrzeitangaben mit Zeitzone. (Es gibt tatsächlich mehrere Formate, lesen Sie hier weiter: https://en.wikipedia.org/wiki/ISO_8601 ) Es wird verwendet, um zeitzonenbezogene Datums- / Uhrzeitinformationen auf serialisierbare Weise zwischen Systemen zu kommunizieren.
Wann welche verwenden? oder eher wann müssen Sie sich um Zeitzonen kümmern?
Wenn Sie sich in irgendeiner Weise um die Tageszeit kümmern müssen, benötigen Sie Zeitzoneninformationen. Ein Kalender oder Alarm benötigt eine Tageszeit, um ein Meeting zur richtigen Tageszeit für jeden Benutzer auf der Welt festzulegen. Wenn diese Daten auf einem Server gespeichert werden, muss der Server wissen, welcher Zeitzone die Datumszeit entspricht.
Um Zeitunterschiede zwischen Ereignissen zu berechnen, die von verschiedenen Orten auf der Welt kommen, reicht der UTC-Zeitstempel aus. Sie können jedoch nicht mehr analysieren, zu welcher Tageszeit Ereignisse aufgetreten sind (z. B. für Webanalysen möchten Sie möglicherweise wissen, wann Benutzer zu Ihnen kommen Website in ihrer Ortszeit : Sehen Sie morgens oder abends mehr Benutzer? Ohne Informationen zur Tageszeit können Sie das nicht herausfinden.
Zeitzonenversatz in einer Datumszeichenfolge :
Ein weiterer wichtiger Punkt ist, dass der Zeitzonenversatz in einer Datumszeichenfolge nicht festgelegt ist . Das heißt, weil 2017-08-30T10:55:24-0800
sagt der Offset-0800
oder 8 Stunden zurück , heißt das nicht, dass es immer sein wird!
Im Sommer kann es durchaus Sommerzeit sein, und das wäre es auch -0700
Dies bedeutet, dass der Zeitzonenversatz (+0100) nicht mit dem Zeitzonennamen (Europa / Frankreich) oder sogar der Zeitzonenbezeichnung (MEZ) identisch ist.
America/Los_Angeles
Die Zeitzone ist ein Ort auf der Welt , wird jedoch PST
im Winter zur Zeitzonen-Offset-Notation (Pacific Standard Time) und PDT
im Sommer zur (Pacific Daylight Time).
Zusätzlich zum Abrufen des Zeitzonenversatzes vom Datenring sollten Sie auch den Zeitzonennamen erhalten, um genau zu sein.
Die meisten Pakete sind in der Lage, numerische Offsets von der Sommerzeit selbst in die Standardzeit umzuwandeln, aber das ist nicht unbedingt trivial, wenn nur der Offset angegeben wird. Zum Beispiel ist die WAT
Zeitzonenbezeichnung in Westafrika genau wie UTC + 0100CET
Zeitzone in Frankreich, aber Frankreich beobachtet die Sommerzeit, während Westafrika dies nicht tut (weil sie nahe am Äquator liegen).
Kurz gesagt, es ist kompliziert. SEHR kompliziert, und deshalb sollten Sie dies nicht selbst tun, sondern einem Paket vertrauen, das es für Sie erledigt, und es auf dem neuesten Stand halten!
then.strftime('%s')
, dass die Ortszeit erwartet wird , der Zeitstempel jedoch anzeigt, dass diedatetime(2008, 1, 1)
UTC vorliegt.