Zeit und Zeitzone einstellen

  • Gleich vorweg: Das wurde schon mehrfach gefragt aber eine befriedigende Antwort habe ich bisher noch nicht zum Thema Zeitzone gefunden.

    Mir ist erst jetzt aufgefallen, dass in Wordpress und meinem WooCommerce Shop eine falsche Zeit verwendet wird. Die aktuelle Uhrzeit geht zwei Stunden vor und damit werden bspw. Bestellungen im Shop in der Zukunft getätigt. Das soll natürlich auf keinen Fall sein.

    Im Backend habe ich natürlich die korrekte Zeitzone Berlin gewählt aber offenbar stimmt schon die Ausgangszeit nicht:

    [INDENT]Koordinierte Weltzeit (UTC) ist 14.09.2017 23:33:09. Die Ortszeit ist 15.09.2017 1:33:09.[/INDENT]

    Nun ist aber zum Zeitpunkt der Lesung UTC 21:33 Uhr und die Ortszeit ist 23:33 Uhr.

    Wenn ich es richtig verstanden habe, liegt der Fehler bei Wordpress, welches als Basiszeit immer UTC nicht, egal welche Zeitzone auf dem Webserver eingestellt ist. Auf meinem Webserver ist eben CEST eingestellt, was sicherlich auch nicht ungewöhnlich ist.

    Auch nach einigem Googeln habe ich nichts gefunden, wie ich ohne große Verrenkungen die korrekte Zeit in Wordpress einstellen kann. Eigentlich muss WP ja nur die Zeitzone auf dem Server ermitteln und sich daraus dann UTC „basteln“ und damit dann die lokal eingestellte Zeitzone nutzen. Geht das echt nicht oder habe ich was übersehen?

    Gruß

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Verwendet wird, was als Ortszeit angezeigt wird.

    Meine Frage ist ja aber nun, wie ich Wordpress beibringe, die korrekte Ortszeit zu ermitteln? Natürlich kann ich eine falsche Zeitzone einstellen aber das kann es ja nicht sein.

    Ortszeit vom Server ist in meinem Beispiel (um bei der Zeit von gestern zu bleiben) der 14. September um 23:33 Uhr CEST. Laut Wordpress ist es aber 23:33 Uhr UTC und damit ist die Ortszeit von Wordpress in Berlin der 15. September um 01:23 Uhr. Wordpress nimmt also die Ortszeit ohne Rücksicht auf die echte Zeitzone und interpretiert sie als UTC.

  • Ist denn auch in der php.ini die richtige Zeitzone eingestellt?
    http://php.net/manual/de/datetime.configuration.php

    Falls auf dem Server die Zeit in der richtigen Zeitzone läuft, in PHP diese Zeitzone aber nicht eingetragen ist, nimmt PHP die Server-Zeit als UTC, und Wordpress schlägt dann eben noch die zwei Stunden der eigenen Zeitzone drauf.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Ja, auf dem Server ist in der php.ini die Zeitzone korrekt gesetzt:

    Code
    date.timezone = "Europe/Berlin"

    phpinfo() zeigt auch an:

    [TABLE="width: 934"]

    [tr]


    [TD="class: e, bgcolor: #CCCCFF"]date/time support [/TD]
    [TD="class: v, bgcolor: #DDDDDD"]enabled [/TD]

    [/tr][tr]


    [TD="class: e, bgcolor: #CCCCFF"]"Olson" Timezone Database Version [/TD]
    [TD="class: v, bgcolor: #DDDDDD"]2017.2 [/TD]

    [/tr][tr]


    [TD="class: e, bgcolor: #CCCCFF"]Timezone Database [/TD]
    [TD="class: v, bgcolor: #DDDDDD"]internal [/TD]

    [/tr][tr]


    [TD="class: e, bgcolor: #CCCCFF"]Default timezone [/TD]
    [TD="class: v, bgcolor: #DDDDDD"]Europe/Berlin[/TD]

    [/tr]


    [/TABLE]

    In meinen eigenen Scripten nutze ich es ja auch und die PHP-Datumsfunktionen funktionieren alle korrekt. date(DATE_RFC2822) zeigt mir bspw. die korrekte lokale Zeit an und wenn ich vorher ein date_default_timezone_set('UTC') mache, dann wird auch die UTC-Zeit mit -2 Stunden korrekt angezeigt.

  • Gut.

    Ein häufiges Problem ist eine lokale php.ini (im Verzeichnis der Anwendung), die die globale php.ini ersetzt.
    Im Unterschied zur .htaccess-Datei wird eine lokale php.ini-Datei nicht zusätzlich zur globalen php.ini-Datei geladen, sondern an deren Stelle.
    Damit gehen alle gloabalen Einstellungen verloren und es werde nur die Einstellungen der lokalen ini-Datei wirksam.
    Für die Zeitzone bedeutet das, daß sie auf "leer" zurückgesetzt wird.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Edi: Plugins sind nicht daran Schuld. Auch ein „nackiges“ Wordpress zeigt die falsche Zeit an.

    Ingo: Die php.ini wird nicht mit einer lokalen php.ini oder durch die .htaccess überschrieben. Die Ausgabe von phpinfo() habe ich auch aus einem Testscript direkt in dem DocumentRoot der Wordpress-Installtion geholt. Dort sind also exakt die gleichen Einstellungen aktiv wie in WP selbst.

  • Kann/sollte zwar nicht daran liegen, aber versuche es einmal mit 7.0 oder 5.6.


    Die 7.0.20 habe ich schon probiert und 5.6 kann ich wegen anderer Scripte unter der Domain nicht testen, da die PHP 7 brauchen. Unter 7.0 ist die Zeit jedenfalls immer noch falsch und PHP 5.6 werde ich mal versuchen lokal zu testen.

  • Wordpress setzt bei der Initialisierung in der wp-settings.php die PHP-Zeitzone mit date_default_timezone_set( 'UTC' ) auf UTC und rechnet dann intern immer mit UTC plus der in WP eingestellten Zeitzone. Falls nun nach der Initialisierung irgendwann die Zeitzone wieder auf die lokale Zeit gesetzt wird, rechnete WP dann entsprechend falsch.

    Du könntest mal alle php-Dateien der WP-Installtion (inkl. Theme und Plugins) nach der Funktion date_default_timezone_set durchsuchen.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!