Thomas: zwei Timestamps vergleichen und Differenz ausgeben

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

  1. 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

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