ruben: PHP Klasse für menschliche Zeit datum/timestamp zu "vorgestern"

Hallo Forum!

Ich suche eine PHP-Klasse, die einen Timestamp in "human time" also Sachen wir "vorgestern", "vor 2 Tagen", "vor 3 Wochen", vielleicht sogar "vor ca. 3 Monaten" umwandeln kann.

Für "gestern" und "vorgestern" ist das noch nicht so sonderlich schwierig, aber wegen der diversen Probleme in PHPs Zeitbehandlung was Schaltjahre und Schaltsekunden angeht (zumindest habe ich darüber gelesen), würde ich mir das ungern selber zumuten, weil ich auch denke, dass es so was bestimmt schon gibt.

Also, falls ihr selber sowas habt, eine gute Klasse kennt oder euer Google-Fu besser als mein Google-Fu ist, vielen Dank!

Englisch/französisch/whatever ist natürlich auch ok, aber i18n & Verständnis sollte möglich sein, ohne dass man haareraufend anfängt an der Tapete zu knabbern!

Danke,
Ruben

  1. Hi ruben,

    Ich suche eine PHP-Klasse, die einen Timestamp in "human time" also Sachen wir "vorgestern", "vor 2 Tagen", "vor 3 Wochen", vielleicht sogar "vor ca. 3 Monaten" umwandeln kann.

    Du kennst strtotime()? Die gültigen Eingaben sind allerdings Englisch, wobei das relativ simpel sein sollte, selbst für jemanden, der kein gutes Englisch spricht.

    Wenn du die Eingaben nun vorher noch übersetzen willst, könnte dir eventuell Zend_Locale helfen, genauer angesehen habe ich es mir aber noch nicht.

    Viele Grüße,
      ~ Dennis.

    1. Hallo Dennis!

      Du kennst strtotime()? Die gültigen Eingaben sind allerdings Englisch, wobei das relativ simpel sein sollte, selbst für jemanden, der kein gutes Englisch spricht.

      Ja, klar, das kenne ich sehr gut, aber das ist genau die falsche Richtung. Ich will ja quasi timetostr(), nur muss man da natürlich noch angeben können, wie die Ausgabe aussehen soll.

      Wenn du die Eingaben nun vorher noch übersetzen willst, könnte dir eventuell Zend_Locale helfen, genauer angesehen habe ich es mir aber noch nicht.

      Ich guck es mir jetzt genauer an, aber wenn ich dich richtig verstehe, hat das mit Timestamp->Menschlich verständlichem Datum gar nichts zu tun, sondern soll mir nur die Eingaben für strtotime übersetzen? Dann bringt es mir wohl nichts.

      Vielen Dank,
      Ruben

      1. Hallo Ruben.

        Ich habe keine Ahnung, ob dir das vielleicht weiter hilft: ich glaube, diese JavaScript-Bibliothek kann das, was du brauchst. Du könntest dir ja mal den Code anschauen und in PHP umschreiben.

        Servus,
        Flo

        1. Hallo Flo,
          so wie ich das sehe, repliziert das die Funktionalität von strtotime() und nicht von timetostr().

          Ich habe keine Ahnung, ob dir das vielleicht weiter hilft: ich glaube, diese JavaScript-Bibliothek kann das, was du brauchst. Du könntest dir ja mal den Code anschauen und in PHP umschreiben.

          Hier mal ein Beispiel, wie das aussähe, was ich mir vorstelle

            
          $schuetzlogin = mysql_query("SELECT (TO_DAYS(NOW())-TO_DAYS(letzterlogin)) AS vortagen LIMIT 1");  
          $schuetzlogin = mysql_fetch_assoc($schuetzlogin);  
          $schuetzlogintage = $schuetzlogin['vortagen']; // vor sovielen tagen  
          if($schuetzlogintage==0) echo 'heute';  
          elseif($schuetzlogintage==1) echo 'gestern';  
          elseif($schuetzlogintage==2) echo 'vorgestern';  
          else echo "vor $schuetzlogintage Tagen";  
          echo $schuetzlogintage;  
          
          

          Das ist jetzt natürlich überhaupt nicht verallgemeinert, aber das ist es, was ich meine. Im Moment erreiche ich das über die zuverlässige MySQL-Abfrage (während PHP, soweit ich weiß, Probleme mit Daten hat wg. Schaltsekunden) und eine supersimple If-Abfrage.
          Ich möchte diese Funktionalität sozusagen stark erweitern, am besten auch so, dass ich einen timestamp in PHP angeben kann und nicht den Umweg über die Datenbank gehen muss.

          Danke,
          Ruben

          1. Hallo Ruben.

            so wie ich das sehe, repliziert das die Funktionalität von strtotime() und nicht von timetostr().

            Ah ok, da hab ich dich falsch verstanden.

            Etwas anderes konnte ich aber bis jetzt partout nicht finden, nicht einmal im Ansatz. Das wirst du dir dann wohl doch selbst schreiben müssen.

            Optimalerweise stellst du das Ergebnis dann gleich als open source zur Verfügung, dann haben zukünftige Generationen auch noch was davon. ;)

            Servus,
            Flo

            1. Hallo Flo!

              Etwas anderes konnte ich aber bis jetzt partout nicht finden, nicht einmal im Ansatz. Das wirst du dir dann wohl doch selbst schreiben müssen.

              Ich konnte auch nichts finden, obwohl Google mich mag, aber ich kanns mir nicht vorstellen, weil definitiv viele Seiten diese Funktionalität implementieren, aber vielleicht sind es alles dirty hacks, so wie das, was ich grad schrob.

              Optimalerweise stellst du das Ergebnis dann gleich als open source zur Verfügung, dann haben zukünftige Generationen auch noch was davon. ;)

              Ich bin mir ja aber auch immer noch nicht sicher, wie ich es angehen soll.
              Ist der Umweg über MySQL nötig oder kann PHP das doch halbwegs zuverlässig?

              Gruß, Ruben