Benutzer/Datumsfelder mit verfälschter Uhrzeit

  • Liebe Community, meine Suche im Forum hat mir kein Thema gebracht, in dem diese Frage schon behandelt worden wäre, sorry falls es doch schon was dazu gäbe oder falls ich das Thema an der falschen Stelle erstellt hätte:


    Ich habe die Benutzer für die neue Website unseres Vereins http://www.oewhwtc.at (Joomla!-Version 3.9.23) aus dem XLS-Backup von der alten Joomla-Website importiert, sie waren dort im Community Builder organisiert. Die Datumsfelder sehen alle richtig aus, Format tt.mm.jjjj.

    Dann habe ich die Erweiterung https://extensions.joomla.org/…ile-to-excel-or-csv-file/ installiert und die Userdaten für Serienbriefe nach XLS exportiert.


    Dort kommen die Datumsfelder um -1 Tag bzw. eigentlich -1 oder -2 Stunden verschoben an: "Tag x-1 23:00:00" oder "Tag x-1 22:00:00" (tw. auch als "Text", aber das verfälscht das Datum wenigstens nicht).

    Der Support des Extension-Herstellers konnte mir leider nicht helfen.

    Also habe ich alle Daten nochmal aus dem Backup upgedated mit dem korrigierten Datumsformat "yyyy-mm-dd 0:00:00", das hat auch schön funktioniert, jetzt kommen die Datumsfelder im Export-XLS richtig an ("Tag x 0:00:00").


    Sobald ich aber einen User in Joomla editiere und speichere, springen alle Datumsfelder dieses Users offenbar wieder auf "Tag x-1 23:00:00" oder "Tag x-1 22:00:00": in der Admin werden sie korrekt als "Tag x 0:00:00" angezeigt, aber nur die neu gespeicherten User scheinen jetzt im Export-XLS wieder mit dem falschen Datum auf, die anderen werden mit den gewünschen "Tag x 0:00:00" exportiert.


    Daraus schließe ich, dass die Extension nichts dafür kann, sondern der Fehler schon in der Benutzerverwaltung durch Joomla passiert.


    Für die Serienbriefe kann ich natürlich einen Workaround machen, indem ich in XLS "23:00:00" und "22:00:00" gegen "24:00:00" ersetze, aber ich wüsste doch gern, wo ich hier den Fehler drin habe?


    Ich habe keine Zeitzone explizit angegeben, als Websitezeitzone ist "UTC" eingestellt. Das könnte eine Abweichung um 1 Stunde ("Wien") erklären

    aber warum weicht die Zeit manchmal (bei unterschiedlichen Feldern) um 2 Stunden ab und bei den anderen um 1 Stunde?

    und warum wird das Datum auch bei den editierten und gespeicherten Usern richtig angezeigt und dann doch nur bei denen falsch exportiert?


    Vielen Dank für alle Tipps!

  • Ich würde empfehlen eine Zeitzone einzustellen.


    Bei UTC gibt es keine Sommer- und Winterzeit. Das erklärt, dass mal 1h und mal 2h Zeitunterschied sind. Dann kann es Abweichungen zwischen Deiner lokalen Zeit und der des Server geben.


    Wenn Du jetzt Excel exportierst, dann wird die Zeit als Zahl umgewandelt und gespeichert. Dass es als Datum/Zeit angezeigt wird, das ist innerhalb von Excel nur eine Form der Darstellung.


    Wenn Du jetzt ein Kalenderfeld öffnest, dann wird der aktuelle Tag (heute) anhand Deines lokalen System angezeigt. Wenn Du das speicherst, dann wird es in UTC umgewandelt und in der Winterzeit mit -1h (Sommerzeit -2h) gespeichert. Nach der Speicherung kann es vorkommen, dass ein falscher oder ggf. auch der richtige Tag angezeigt wird. In Excel wird das Datum als fortlaufende Zahl gespeichert, wie es im System steht (UTC) und wenn Du das öffnet, stellt Excel anhand des Format als Datum in Abhängigkeit deiner lokalen Einstellung dar.

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • danke für den Tipp! hab's gleich geändert, aber leider hilft es nichts:

    das danach geänderte/gespeicherte Datumsfeld wird in der Benutzer-Verwaltung richtig mit "1.12.2020 0:00:00" angezeigt und falsch mit "30.11.2020 23:00:00" exportiert

    ich hätte jetzt auch direkt in die DB schauen wollen, aber ich finde leider die Tabelle nicht, in der die Werte der selbst definierten Felder gespeichert sind

  • In Deinem Profil kannst Du eine eigene Zeitzone einstellen. Steht diese auf "Standard verwenden"?

    Um welches Datum-Feld handelt es sich denn? Davon hängt es ab, wo es in der DB gespeichert wird.

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • danke für den Tipp, die Zeitzone war auf "Standard", habe sie auf "Wien" umgestellt, keine Änderung des Verhaltens


    es geht um die benutzerdefinierten Datumsfelder; für die Joomla-eigenen Datumsfelder kann ich nicht kontrollieren, ob sich durch das Speichern was ändern, weil ich keine ursprünglichen Vergleichswerte habe

    inzwischen habe ich die DB-Tabelle gefunden, wo die Werte gespeichert sind, jos_fields_values, und ich habe rausgefunden, dass das ziemlich unsystematisch passiert, einige Feldinhalte werden durch das Editieren und Speichern in der Joomla-Benutzer-Verwaltung um -1 Std verändert, einige nicht

    wann die Änderung um "-2 Std" auftritt, ist auch unsystematisch, betrifft nicht immer dieselben Felder


    ich glaube ich geb's erstmal auf, der Workaround, im exportierten XLS dann alle 23:00:00 und 22:00:00 gegen 24:00:00 zu ersetzen, kostet wesentlich weniger Zeit als die Suche nach dem Ursprung des Fehlers ;)


    habe noch den Support des Hosters angeschrieben, ob die noch Tipps haben, vielleicht habe ich ja bei der Installation von Joomla schon Fehler gemacht; falls die Lösung dort liegt, werde ich es hier berichten, vielleicht haben ja andere User dasselbe Problem?

  • Ich habe das auf meiner Seite einmal geprüft und da ist es auch so. Wenn ich ein Datum auswähle, dann wird es als UTC-Zeit auf dem Server gespeichert. Das ist je nach Sommer-/Winterzeit dann -1h oder -2h.

    Wenn der Export der Daten jetzt nicht die eingestellte Zeitzone beachtet, sondern 1:1 aus der DB ausgibt, dann hast Du entsprechend falsche Datum-Angaben in der Excel-Liste. Das Problem hatte ich auch mal und konnte es mit der Angabe der Zeitzone lösen.

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • ah, OK, danke, dann werde ich nochmal sorgfältig die Einstellung der Zeitzone prüfen, das scheint noch nicht wirklich korrekt zu sein, vielleicht habe ich noch was übersehen

    danach nochmal die Originaldaten importieren, und wenn es dann immer noch auftritt, dann bleibt halt der Workaround im XLS ;)

  • Für die Serienbriefe kann ich natürlich einen Workaround machen, indem ich in XLS "23:00:00" und "22:00:00" gegen "24:00:00" ersetze, aber ich wüsste doch gern, wo ich hier den Fehler drin habe?


    Ich kenne die genannten Erweiterungen nicht, aber ich vermute, dass eine die Klasse JDate nicht korrekt implementiert.


    Wenn diese Klasse korrekt genutzt wird, dann wird ein Datum immer in UTC in der Datenbank gespeichert. Das bedeutet, dass beim Speichern eines Datums immer die "aktuell aktive" Zeitzone in UTC umgerechnet werden muss. Beim Anzeigen des Datums geschieht dies umgekehrt: UTC wird in die "aktuell aktive" Zeitzone umgerechnet.


    Ich finde das dieser Beitrag JDate gut erklärt:

    How to use JDate - Compojoom Blog - compojoom.com


    Hast du dir die gespeicherten Werte für die vermeintlich "falschen" Datumsangaben in der Joomla-Datenbank einmal angesehen?

  • ich vermute, dass eine die Klasse JDate nicht korrekt implementiert

    Hallo Astrid,

    es kann an beidem liegen. Ich vermute eher dass beim Export die "Roh-Daten" (UTC-Zeit) exportiert werden. Das gleiche habe ich auch, wenn ich mit PowerBI auf die DB zugreife und die Daten direkt abrufe. Da muss ich im PowerBI in der Aufbereitung die Zeiten auch umwandeln, damit mir das korrekte Datum angezeigt wird.

    Das gleiche Durcheinander hatte ich auch mal, als ich noch UTC eingestellt und später auf die Zeitzone umgestellt hatte. Da kam das auch mit den Speicherungen während Sommer- / Winterzeit durcheinander. Seitdem - das erste was ich mache bei einer neuen Seite: Zeitzone einstellen. ;)

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.