PHP-Laie: PHP 8.2 | strtotime - überholt

Hallo,

beim Debuggen nach einem PHP Update ist mir gerade aufgefallen, das "strtotime" als DEPART angezeigt wird. Auch in der Doku ( https://www.php.net/manual/de/function.strtotime.php ) bestätigt sich das Bild 😱.

Ersatz soll: https://www.php.net/manual/de/class.datetimeimmutable.php sein. Von der ich (vermultich Blind) kein Anwendungsbeispiel finden konnte welches ohne 30 Codezeilen strtotime ersetzt.

Wie habt Ihr das gelöst?


Edit von Rolf B - als Zusammenfassung des Threads:
Dieses Posting ist ein Missverständnis, strtotime ist nicht missbilligt. Hier wurden strftime (das in der Tat auf der Abschussliste steht) und strtotime (das dort (noch?) nicht steht) verwechselt.

  1. Hello,

    danke für den Hinweis.

    Da müssen also demnächst tausende von Skripten nachgebessert werden, wenn die Funktion beim Update ganz rausgefallen ist.

    Glück Auf
    Tom vom Berg

    --
    Es gibt soviel Sonne, nutzen wir sie.
    www.Solar-Harz.de
    S☼nnige Grüße aus dem Oberharz
    1. Da müssen also demnächst tausende von Skripten nachgebessert werden, wenn die Funktion beim Update ganz rausgefallen ist.

      Gerade mal nachgesehen:

      "strtotime"
      100+ matches in 21+ files
      

      Ich freu mich 😬

      1. Da müssen also demnächst tausende von Skripten nachgebessert werden, wenn die Funktion beim Update ganz rausgefallen ist.

        Gerade mal nachgesehen:

        "strtotime"
        100+ matches in 21+ files
        

        Ich freu mich 😬

        Allerdings kann ich bei meiner bisherigen Recherche die Ausgangsnachricht nicht verifizieren.

        Wer kann mal Klarheit hier herein bringen?

        Jörg

        1. Hello Jörg,

          Da müssen also demnächst tausende von Skripten nachgebessert werden, wenn die Funktion beim Update ganz rausgefallen ist.

          Gerade mal nachgesehen:

          "strtotime"
          100+ matches in 21+ files
          

          Ich freu mich 😬

          Allerdings kann ich bei meiner bisherigen Recherche die Ausgangsnachricht nicht verifizieren.

          Wer kann mal Klarheit hier herein bringen?

          Ich

          Aber Arbeit könnte das trotzdem bedeuten :-(

          Glück Auf
          Tom vom Berg

          --
          Es gibt soviel Sonne, nutzen wir sie.
          www.Solar-Harz.de
          S☼nnige Grüße aus dem Oberharz
    2. Lieber TS,

      danke für den Hinweis.

      nein, ich danke nicht, ich überprüfe.

      Liebe Grüße

      Felix Riesterer

      1. Hello lieber Felix,

        danke für den Hinweis.

        nein, ich danke nicht, ich überprüfe.

        Du bist einfach super!

        Vielleicht bezieht sich der PHP-Laie ja auf die Warnung:

        PHP Manual Warung

        Aber da ich auch die Tante gefragt habe, kam ich auf strftime() und nicht auf strtotime().

        Glück Auf
        Tom vom Berg

        --
        Es gibt soviel Sonne, nutzen wir sie.
        www.Solar-Harz.de
        S☼nnige Grüße aus dem Oberharz
  2. Lieber PHP-Laie,

    das "strtotime" als DEPART angezeigt wird.

    was soll „DEPART“ genau bedeuten?

    Auch in der Doku ( https://www.php.net/manual/de/function.strtotime.php ) bestätigt sich das Bild 😱.

    Dort finde ich unter exakt diesem Link nicht ein einziges Mal das Wörtchen „depart“ (mit [STRG]+[F]). Was also genau erzählst Du hier? Sag doch bitte auch dazu, welche PHP-Version auf dem System im Einsatz ist, welche strtotime nicht mehr enthalten will.

    Ersatz soll: https://www.php.net/manual/de/class.datetimeimmutable.php sein. Von der ich (vermultich Blind) kein Anwendungsbeispiel finden konnte welches ohne 30 Codezeilen strtotime ersetzt.

    „Soll“... es scheint Dir anscheinend so und vielleicht am Ende gar - weiß man nicht so genau. Mach Dich mal wirklich schlau, was da los ist, anstatt hier nur halbgare Vermutungen zu äußern! Mein Test ergibt jedenfalls das hier: Konsole mit PHP-Ausgabe

    Liebe Grüße

    Felix Riesterer

    1. Mein Test ergibt jedenfalls das hier: Konsole mit PHP-Ausgabe

      Version 8.1.2
      Um die geht es dem To doch nicht, oder?

      1. Lieber Jörg,

        Version 8.1.2
        Um die geht es dem To doch nicht, oder?

        Du hast natürlich wieder mal sehr gut aufgepasst und selbstverständlich recht. Daher habe ich bereits nachgeliefert.

        Liebe Grüße

        Felix Riesterer

        1. Hallo Felix,

          Du hast natürlich wieder mal sehr gut aufgepasst und selbstverständlich recht. Daher habe ich bereits nachgeliefert.

          Danke für deine schnelle Arbeit. 👍

          Jörg

      1. strtotime != strftime

  3. Lieber PHP-Laie,

    auch mit PHP8.2 habe ich dieses Ergebnis: strtotime unter PHP8.2 auf der Konsole

    Liebe Grüße

    Felix Riesterer

    1. https://php.watch/versions/8.1/strftime-gmstrftime-deprecated

      1. Hello mein lieber PHP-Laie,

        erst lesen, dann denken, dann posten ;-P

        Das bezieht sich auf strftime() und nicht auf strtotime()

        PHP Watsch (sic!) zu strftime

        Glück Auf
        Tom vom Berg

        --
        Es gibt soviel Sonne, nutzen wir sie.
        www.Solar-Harz.de
        S☼nnige Grüße aus dem Oberharz
        1. Du hast vollkommen Recht, ich weiß nicht warum ich das nicht gesehen habe!? Ich muss ins Bett, da war die lezte Nacht wohl einfach zu kurz.

          Entschuldigt bitte den Aufruhr...

  4. Hallo PHP-Laie,

    das Problem ist ja geklärt und ich habe in den Eröffnungsbeitrag zum Thread eine kurze Notiz hineineditiert, damit man nicht den ganzen Thread lesen muss um das Missverständnis zu entdecken.

    Aber eins wollte ich noch anmerken:

    Ersatz soll: https://www.php.net/manual/de/class.datetimeimmutable.php sein. Von der ich (vermultich Blind) kein Anwendungsbeispiel finden konnte welches ohne 30 Codezeilen strtotime ersetzt.

    Das war ein Einzeiler und kann auch einer bleiben. Es werden dann 30 Zeichen mehr, nicht 30 Zeilen. Wenn denn dann irgendwann mal die Deprecated-Axt auf strtotime herabstürzen sollte…

    echo strtotime("2023-05-25") . "\n";
    echo strtotime("05/25/2023") . "\n";
    echo strtotime("25.05.2023") . "\n";
    echo "And now for something completely different!\n";
    echo (new DateTimeImmutable("2023-05-25"))->getTimestamp() . "\n";
    echo (new DateTimeImmutable("05/25/2023"))->getTimestamp() . "\n";
    echo (new DateTimeImmutable("25.05.2023"))->getTimestamp() . "\n";
    

    Jede Zeile gibt 1684972800 aus. Außer einer…

    Das deprecatifizierte strftime ist wohl deswegen missbilligt, weil es keine einheitlichen Ergebnisse liefert, sondern von der Library abhängt, gegen die PHP gelinkt wurde.

    Aber grundsätzlich hat ein DateTime-Objekt eine format-Methode, die ebenfalls ziemlich leistungsfähig ist, ohne dass man den (schlecht benannten) IntlDateFormatter dafür auspacken muss.

    Insofern: strftime zu ersetzen kann Arbeit bedeuten, verlangt aber keinen Dreißigzeiler. Denk ich…

    Rolf

    --
    sumpsi - posui - obstruxi