2017-08-16 4 views
0

Ich habe ein Django API/PostgreSql-Projekt, wo ich versuche, die Datetime im UTC-Format zu speichern, die später in eine korrekte Zeitzone im Frontend mit eckigen konvertiert.Django speichert nicht die genaue UTC-Zeit in db

Meine aktuellen Einstellungen sind:

USE_TZ = True 
TIME_ZONE = 'US/Eastern' 

Ich wurde zum ersten Mal UTC verwenden, aber aus irgendeinem Grund wurde die Datetime als 1 Stunde gespeichert, so dass ich die Zeitzone zu meiner Server Zeitzone

Modell:

date = models.DateTimeField(default = timezone.now()) 

Aber immer noch, wenn ich den eingefügten Datensatz abzurufen, die Zeit ist -3 spät Minuten.

Während, wenn ich den Code unten verwenden, ist es eine richtige Zeit speichert:

date = models.DateTimeField(auto_now_add=True) 

ich etwas in der Konfiguration fehle? Welche TIME_ZONE sollte ich verwenden, Serverstandort time_zone, oder es hat mit der Serverzeit zu tun Setup?

+0

Ist Ihr Server-Zeit von 3 Minuten aus? –

+1

'date = models.DateTimeField (default = Zeitzone.now())' <= Dies setzt das Standarddatum auf den Zeitpunkt, zu dem das Modul analysiert wird. Wahrscheinlich wollten Sie 'default = timezone.now' (beachten Sie fehlende Klammern). – dhke

+0

Mögliches Duplikat von [Django datetime issues (default = datetime.now())] (https://stackoverflow.com/questions/2771676/django-datetime-issues-default-datetime-now) – dhke

Antwort

0

Das Problem behoben ist, ich weiß nicht, warum, aber wenn im mit:

date = models.DateTimeField(default = timezone.now()) # note: .now() with parenthesizes 

Die Zeit stecken bleibt, zu dem Zeitpunkt, wenn der Server in Betrieb genommen.

Die Verwendung fix:

date = models.DateTimeField(default = timezone.now) # without() 

Im auf Django 1.6.5

+1

Ihre Antwort finden Sie in den Referenzen duplizieren ;-). – dhke

Verwandte Themen