Gerhard: Falsche Zeitfunktion?

Hallo,
ich möchte an zwei Stellen die Zeit messen und die Differenz feststellen. Ich verwende dazu
die Funktion

  
$zeit = date('U');  

Bei deren Aufruf kommt folgende Meldung:

Strict standards: date() [function.date]: 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.
We selected 'Europe/Paris' for '2.0/DST' instead

Mit der Meldung kann ich leider nicht viel anfangen.
Wieso soll ich eine Zeitzone setzen, die Differenz ist doch davon unabhängig.
Gibt es eine andere Funktion, die diesen Fehler nicht provoziert?
Gruß
Gerhard

  1. Om nah hoo pez nyeetz, Gerhard!

    Wieso soll ich eine Zeitzone setzen, die Differenz ist doch davon unabhängig.

    date ist für etwas anderes gedacht.

    Gibt es eine andere Funktion, die diesen Fehler nicht provoziert?

    time()

    Matthias

    --
    1/z ist kein Blatt Papier.

  2. Tach!

    Wieso soll ich eine Zeitzone setzen, die Differenz ist doch davon unabhängig.

    Wenn du die zeitzonenabhängigen Funktionen verwendest, musst du dich nicht wundern, dass das System wissen möchte, auf welche Zeitzone es sich beziehen soll. Es kann ja nicht wissen, dass du die nicht benötigst. Und offensichtlich macht date() auch bei U keine Ausnahme.

    Gibt es eine andere Funktion, die diesen Fehler nicht provoziert?

    Zeitzonenunabhängig sind die mit gm... beginnenden Funktionen - und das schon genannte time().

    dedlfix.

    1. Hallo!

      Zeitzonenunabhängig sind die mit gm... beginnenden Funktionen - und das schon genannte time().

      So ganz verstehe ich das nicht.
      Lt. Beschreibung gilt

      string date ( string $format [, int $timestamp = time() ] )
      Dabei wird entweder der angegebene Timestamp oder die gegenwärtige lokale Zeit berücksichtigt.

      Ich habe daher jetzt zum Formatieren der Zeitangabe angegeben
      date("d.m.Y",time());
      bzw.
      date("H:i",$timestamp);

      Das Ergebnis ist zwar korrekt, aber natürlich die gleiche Meldung.
      Wie erhalte ich dann die formatierten Werte?
      Die time-Funktion hat ja wohl keine derartigen Formatierparameter.
      Gruß
      Gerhard

      1. Tach!

        Ich habe daher jetzt zum Formatieren der Zeitangabe angegeben
        date("d.m.Y",time());

        Das time() ist überflüssig, weil dessen Ergebnis (die aktuelle Zeit) sowieso genommen wird, wenn kein zweiter Parameter angegeben wird.

        date("H:i",$timestamp);
        Das Ergebnis ist zwar korrekt, aber natürlich die gleiche Meldung.

        Ja, weil PHP zufällig die Zeitzone verwendet hat, die du im Sinn hattest. Du sollst sie aber explizit setzen und es nicht dem Zufall überlassen, welche Zone PHP als angemessen findet.

        Wie erhalte ich dann die formatierten Werte?

        Formatierte Werte für die von dir noch zu konfigurierende Zeitzone (so wie es die Meldung verlangt) bekommst du mit date(). Formatierungen, die sich auf UTC beziehen, bekommst du mit gmdate(), ohne dass du eine Zeitzone setztn musst.

        Die time-Funktion hat ja wohl keine derartigen Formatierparameter.

        Nein, die liefert auch nur einen Timestamp, was die Sekundenanzahl seit 1.1.1970 0:00 UTC ist.

        Der Timestamp 0 ist in Europe/Berlin 1.1.1970 1:00 Uhr, und in Europe/Moscow 1.1.9070 3:00 Uhr

        dedlfix.

        1. Hi,
          danke, langsam sehe ich Licht am Horizont!

          Ja, weil PHP zufällig die Zeitzone verwendet hat, die du im Sinn hattest. Du sollst sie aber explizit setzen und es nicht dem Zufall überlassen, welche Zone PHP als angemessen findet.

          Für die Ermittlung einer Zeitdifferenz ist ja die Zeitzone irrelevant.
          Was aber, wenn man einem Anwender z.B. melden will:
          Sie haben die Nachricht am ..... um ....
          Da soll natürlich die Ortszeit des Anwenders erscheinen. Die Zeitzone kenne ich aber doch nicht, um sie richtig zu setzen.
          Oder schreibt man da z.B. 6.4.13, 16:25 Greenwich Zeit
          Gruß
          Gerhard

          1. Tach!

            Was aber, wenn man einem Anwender z.B. melden will:
            Sie haben die Nachricht am ..... um ....
            Da soll natürlich die Ortszeit des Anwenders erscheinen. Die Zeitzone kenne ich aber doch nicht, um sie richtig zu setzen.
            Oder schreibt man da z.B. 6.4.13, 16:25 Greenwich Zeit

            Du kannst da das hinschreiben, was du für angemessen hältst. Du kannst natürlich auch vorher den Nutzer befragt haben, welche Zeitzone er gern hätte.

            dedlfix.