zwei Timestamps vergleichen und Differenz ausgeben
Thomas
- php
0 ChrisB
Hallo
Habe zwei Timestamps (mktime) die ich vergleichen möchte bzw. die Differenz in Minuten oder Std. oder Tage ausgeben. Mein Code:
$jetzt = mktime();
$diff = $jetzt - $timestamp;
if($diff < 3600) $datum = "vor ".date("i",$diff)." Minuten"; //minuten
if( ($diff > 3600) AND ($diff < 86400) ) $datum = "vor ".date("H",$diff)." Stunden"."- $diff"; //stunden
if($diff > 86400) { //Tage
$tag = date("j",$diff);
if($tag == 1) {
$datum = "vor einem Tag";
} else {
$datum = "vor ".$tag." Tagen";
}
}
$timestamp kommt von einer DB. Ist die Differenz unter einer Stunde funktioniert es, ab 1. Stunde bekomme ich ein falschen wert. Z.B. mit einer Differenz von 7000 krieg ich 17 Std. Was ist falsch, wo stehe ich auf dem Schlauch?
Danke für eure Hilfe.
Gruss
Thomas
Hi,
$timestamp kommt von einer DB.
In welchem Format?
Ist die Differenz unter einer Stunde funktioniert es, ab 1. Stunde bekomme ich ein falschen wert. Z.B. mit einer Differenz von 7000 krieg ich 17 Std.
Das müsste dann also der Zweig sein:
> if( ($diff > 3600) AND ($diff < 86400) ) $datum = "vor ".date("H",$diff)." Stunden"."- $diff"; //stunden
Was ist falsch,
$diff = 7000;
echo "vor ".date("H",$diff)." Stunden"."- $diff";
gibt mir
vor 02 Stunden- 7000
aus - was auch das zu erwartende Ergebnis innerhalb unserer Zeitzone ist.
wo stehe ich auf dem Schlauch?
An der Stelle, wo du meinst es wäre sinnvoll, eine Funktion, die für die Formatierung eines Unix Timestamps als Datum gedacht ist, für etwas anderes zu benutzen.
Schau dir DateTime::diff an.
(Achtung, in älteren PHP-Versionen ist das teilweise noch buggy, was die Rückgabe einer Differenz in Tagen angeht. Sorgfältiges Testen ist angesagt.)
MfG ChrisB