Ich habe folgende Situation: - Postgres-Backend mit einem Feldsqlalchemy Umwandlung UTC Datetime in der lokalen Zeit vor dem Speichern
timestamp without time zone
- direkt vor dem Datetime-Wert zu speichern, ist es wie folgt aussieht: 2014.09.29 06: 00: 00 + 00: 00
- I dann die gleiche Zeile aus der DB-Last und der Wert ist: 2014-09-29 09:00:00
So in der Datenbank des gespeicherte Datum ist nicht mehr 6 Uhr .. aber 9 Uhr - Es ist in meiner lokalen Zeitzone konvertiert.
Ich verstehe nicht, was passiert. Warum wird das gespeicherte Datum in lokal konvertiert?
Danke.
bearbeiten
So nach @ univerio Antwort ich etwas versucht: Ich entfernte die Tzinfo ab dem Datum Zeit von
tun.replace(tzinfo = None)
Und nun wird das Datum korrekt gespeichert - es nicht anpassen es zur lokalen Zeit. Ich verstehe nicht ganz, warum, also werde ich die Frage offen lassen, falls jemand eine Erklärung hat.
Danke.
Re deine Bearbeitung einstellen: es scheint, dass ein Zeitstempel mit Zeitzoneninformationen zu der konvertierte bekommen Zeitzone der Verbindung, wenn sie von PostgreSQL als "Zeitstempel ohne Zeitzone" gespeichert wird. Indem Sie Ihre 'datetime' naiv machen, sagen Sie PostgreSQL, den Zeitstempel wie er ist zu speichern. Dies ist eine gute Lösung, wenn es Ihnen mit naiven 'Datetime's gut geht. Persönlich denke ich, dass es besser ist, diese Fehler zu vermeiden, indem Sie immer mit "datetime's /' timestamp's arbeiten und immer UTC benutzen. – univerio