Jossi: Zeitzone ermitteln

Hallo
mit

  
date_default_timezone_get();

wollte ich die eingestellte Zeitzone ermitteln.
Da kam die Fehlermeldung:

  
Strict standards: date_default_timezone_get() [function.date-default-timezone-get]:  
It is not safe to rely on the system's timezone settings.  
Please use the date.timezone setting, the TZ environment variable or the  
date_default_timezone_set() function. In case you used any of those methods  
and you are still getting this warning, you most likely misspelled the timezone identifier.  

Aber ich will sie doch gar nicht setzen, sondern die aktuelle Einstellung wissen.
Wie mache ich dies?
Schöne Grüße
Jossi

  1. Hi,

    Aber ich will sie doch gar nicht setzen, sondern die aktuelle Einstellung wissen.
    Wie mache ich dies?

    wenn sie nicht explizit gesetzt wurde, kann nur geraten werden. Und da das eher nicht gut funktioniert, kommt die Warnung. Steht auch alles im Manual: http://www.php.net/manual/en/function.date-default-timezone-get.php

    Gruß,
    Andreas.

    1. Hi Andreas,

      wenn sie nicht explizit gesetzt wurde, kann nur geraten werden. Und da das eher nicht gut funktioniert, kommt die Warnung. Steht auch alles im Manual: http://www.php.net/manual/en/function.date-default-timezone-get.php

      Wo findest Du dies in dem Dokument?
      Ich lese

      If none of the above succeed, date_default_timezone_get() will return a default timezone of UTC.

      ... also ein ordentlicher Rückgabewert unfd kein Programmabbruch.
      Gruß
      Jossi

      1. Hi,

        If none of the above succeed, date_default_timezone_get() will return a default timezone of UTC.

        ... also ein ordentlicher Rückgabewert unfd kein Programmabbruch.

        Wieso denn „Programmabbruch”?

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
      2. If none of the above succeed, date_default_timezone_get() will return a default timezone of UTC.

        ... also ein ordentlicher Rückgabewert unfd kein Programmabbruch.

        Definiere "ordentlich". Eher "gültig". Gültig im Sinne der Definition ist ein String. Das Problem dabei ist, dass letztendlich an verschiedenen Stellen untersucht wird, was für den Server als Zeitzone KONFIGURIERT wurde.

        Und bei Servern, die im Internet ihren Dienst tun, ist das entweder die lokale Zeitzone des Serverbetreibers oder UTC. Vor allem aber kann sich die Systemeinstellung ändern ohne das Du als "Webmaster" vom Serverbetreiber informiert wirst. Zu dem KANN diese Einstellung in php.ini, .htaccess, httpd.conf oder .user.ini überschrieben sein. Das Ergebnis ist also allenfalls eine Vermutung und kann mit den zeiten, die PHP dann ausgibt nicht so viel zu tun haben, wie Du es vermutest. In der Warnung steht deshalb "unsafe".

        Also rät die Warnung dazu, die Zeitzone nicht vom System zu lesen, sondern mit den gängigen Methoden (date_default_timezone_set(), besser die Eigenschaft date.timezone in der php.ini, .htaccess, httpd.conf oder .user.ini) zu setzen.

        ... unfd kein Programmabbruch.

        Es ist eine Warnung / Notiz. Ein Abbruch erfolgt also NICHT.

        sondern die aktuelle Einstellung wissen

        Tja. Da date_default_timezone_get(); sich die Daten aus verschiedenen Quellen holt, solltest Du wissen welche der aktuellen Einstellungen Du wissen willst und dann konkret deren Quelle fragen.

        Umfassende und richtige Informationen zu der derzeit wirksamen Zeitzoneneinstellung liefert date('e') -> Name date('T') -> Abkürzung wie "EST" oder date('O') -> Differenz zu UTC in h oder date('z') -> Differenz zu UTC in Sekunden. Dazu muss man also nicht mit date_default_timezone_get() orakleln.

        Jörg Reinholz

        1. Tach!

          Da date_default_timezone_get(); sich die Daten aus verschiedenen Quellen holt,

          Laut Handbuchseite zu dieser Funktion holt sich PHP ab 5.4 keinerlei Informationen mehr aus dem System. Das Ergebnis ist, was in date_default_timezone_set() gesetzt wurde oder in date.timezone oder "UTC". Damit ist es noch weniger sinnvoll geworden, sich auf die Systemeinstellung zu verlassen und meine erste Empfehlung nicht mehr gut. Selbst wenn das Projekt noch auf 5.3 läuft, würde ich nun die Zeitzone explizit setzen. Irgendwann kommt das Update und dann hat man diese Besonderheit vergessen.

          dedlfix.

  2. Tach!

    It is not safe to rely on the system's timezone settings.
    Aber ich will sie doch gar nicht setzen, sondern die aktuelle Einstellung wissen.

    Dann rely doch dem Funktionsergebnis und lass die Meldung mit einem @ verschwinden.

    dedlfix.

    1. Dann rely doch dem Funktionsergebnis und lass die Meldung mit einem @ verschwinden.

      Hallo,
      was heißt rely und was @?
      Jossi

      1. Hi,

        Dann rely doch dem Funktionsergebnis und lass die Meldung mit einem @ verschwinden.

        Hallo,
        was heißt rely

        Das wirst du, wenn’s mit den Englischkenntnissen hapern sollte, doch wohl selbst irgendwo nachschlagen können.

        und was @?

        http://www.php.net/manual/en/language.operators.errorcontrol.php

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?