Django Serverzeit und Datetimeformat

Django, Flask, Bottle, WSGI, CGI…
Antworten
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hi,

ich habe in meiner settings.py

Code: Alles auswählen

LANGUAGE_CODE = 'de-DE'

TIME_ZONE = 'Europe/Berlin'

USE_I18N = True

USE_L10N = True

USE_TZ = True
und das gibt mir in meiner Datenbank den richtigen aktuellen Zeitstempel den ich haben will. Außerdem möchte ich das deutsche Format haben und nicht irgendwas mit a.m./ p.m., aber wenn ich dann das object.datetime in meinem Template ausgebe, dann werden mir immer 2 Stunden abgezogen.

Also:

Erstelle ein Objekt am 30.05.2021 8:34:00.

Das gerendert HTML gibt dann: 30. Mai 2021 6:34 aus.


Wie fixed man das?
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
LukeNukem
User
Beiträge: 232
Registriert: Mittwoch 19. Mai 2021, 03:40

naheliegend hat geschrieben: Sonntag 30. Mai 2021, 07:35 Wie fixed man das?
Es ist nur ein Schuß ins Blaue, aber mir scheint, als würden Deine Zeitangaben an irgendeiner Stelle auf GMT (Greenwich Mean Time) zurückgerechnet. Vielleicht fehlt die Zeitzoneninformation an irgendeiner Stelle, etwa in der Datenbank? PostgreSQL zum Beispiel kennt für Timestamps jeweils einen Spaltentyp mit und einen ohne Zeitzone.
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Welche Zeitzone und Location sendet der Client denn im Header mit?
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

In bestimmten Konstellationen kann es passieren, dass die entsprechenden Einstellungen des Betriebssystems als Default herangezogen werden. Daher schlage ich vor, sicherzustellen, dass die Locale-Einstellung sowie die Zeitzone dort korrekt konfiguriert sind. Gerade bei Containern wird das schon einmal vergessen.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

sparrow hat geschrieben: Sonntag 30. Mai 2021, 12:15 Welche Zeitzone und Location sendet der Client denn im Header mit?
Wo kann ich das nachschauen? Ich habe das aktuell noch auf localhost laufen und habe mit Wireshark ein GET mitgeschnitten. Im HTTP-Abschnitt finde ich nur User Agent, URI, und co.
nezzcarth hat geschrieben: Sonntag 30. Mai 2021, 12:42 In bestimmten Konstellationen kann es passieren, dass die entsprechenden Einstellungen des Betriebssystems als Default herangezogen werden. Daher schlage ich vor, sicherzustellen, dass die Locale-Einstellung sowie die Zeitzone dort korrekt konfiguriert sind. Gerade bei Containern wird das schon einmal vergessen.
Wie schaue ich die Locale-Einstellungen an?
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

Mit 'locale'. Die Zeitzone wird üblicherweise mit einem Symlink von '/etc/localtime" auf irgendwas unter '/usr/share/zoneinfo' gesetzt. Das kannst du z.B. mit 'readlink -f /etc/localtime' prüfen oder auch einfach 'ls -l /etc |grep localtime' . Unter systemd basierten Systemen (also insb. nicht Alpinelinux-Container), gibt es auch 'locatectl' und 'timedatectl', die weiterhelfen.
Antworten