# Timestamp minus Timestamp



## goto; (18. November 2009)

Hallo, hab ein kleines Problem, unzwar hab ich zwei Timestamps die so aussehen 
( 1257686596  und  1258229253  ) . Jetzt ist es ja einfach die beiden zu subtrahieren. Wenn ich mir nun aber das Ergeniss wie einen Timestamp anzeigen lasse bringt er mir irgendeine Zahl die nicht dem Entspricht was ich brauche. Es geht einfach da drum das ich mir den Zeitinterval zwischen beiden Anzeigen lassen möchte. Ist das möglich? doofe Frage, möglich ist es sicher, nur wie setze ich das um? Danke im vorraus.


----------



## Psychokiller (18. November 2009)

Wie möchtest du dir das denn anzeigen lassen? 

Um nur die Sek. dazwischen anzeigen zu lassen musst du ja nur neue Zeit weniger alte Zeit rechnen.


Wenn du das ganze aber in tagen std min und sek anzeigen lassen willst musst du auch erstmal neue Zeit weniger alte Zeit rechnen um an die Anzahl der Sekunden zu kommen die vergangen sind.

Das ganze dann teilen durch die Anzahl der Sekunden die ein Tag hat also 86400 und das Ergebnis mit  floor() abrunden damit du ganze Tage bekommst.

Danach ziehst du Anzahl der Tage * 86400 von der gesamten vergangen Zeit ab und den rest teilst du dann durch 3600 wieder gerundet mit floor() um an die Std. zu kommen.

Nun ziehst du Tage * 86400 + Stunden * 3600  von der gesamten vergangenen Zeit ab und den Rest teilst du dann wieder durch 60 gerundet mit floor() um an die Minuten zu kommen. 

Jetzt nur noch Tage * 86400 + Stunden * 3600 + Minuten*60 abziehen von der gesamten vergangen Zeit und der bleibende Rest sind die Sekunden.

Das wars dann schon.

Hoffe konnte dir helfen will dir jetzt kein fertigen Code hier abliefern sonst wäre es ja langweilig. ^^ Aber mit den vorgaben sollte es einfach sein es selber zu schreiben.


MfG

Psycho


----------



## goto; (18. November 2009)

supi. Vielen Dank


----------



## goto; (18. November 2009)

Hi, 
hab das jetzt mal angepasst,

```
$login = date("U", $online["logintime"]); 
$logout = date("U", $online["endtime"]); 
$timedif = $logout - $login;
$difresult = $timedif/86400*3600;

$result = (int)$difresult;
echo $result;
```
ist das so Korrekt um an die Minuten zu kommen?
Das ergebnis lass ich mir dann via d.m.Y H:i:s Anzeigen. Richtig?


----------



## Psychokiller (18. November 2009)

nein das ist nicht korrekt weil deine Rechnung falsch ist. Du musst ja so denken der Timestamp besteht aus Sekunden das heist du rechnest durch das Subtrahieren der beiden Timestamps aus wieviele Sekunden seitdem vergangen sind. Bei dem bsp. von ganz oben wären das 542657 Sekunden.

Wenn du jetzt wissen möchtest wieviele Minuten das sind musst du nur wissen wieviele Sekunden hat eine Minute? 
Eine Minute hat 60Sekunden also musst du wenn du wirklich nur die Minuten haben möchtest lediglich die Differenz durch 60 rechnen.

Bsp.

542657 / 60 = 9044,28 Minuten

Wenn du jedoch wie ich oben beschrieben habe auch noch Tage, Std, Minuten und Sekunden haben möchtest musst du so rechnen wie ich es oben gemacht habe.

Dafür schreibe ich dir den code jetzt mal hier rein:


```
$timestamp_alt=1257686596;
$timestamp_neu=1258229253;

$diff=$timestamp_neu - $timestamp_alt;

$tage=floor($diff/86400);
$std=floor(($diff - ($tage*86400)) / 3600);
$min=floor(($diff - ($tage*86400 + $std*3600)) / 60);
$sek=($diff - ($tage*86400 + $std*3600 + $min*60));

echo "Zeit: ".$tage."t ".$std."h ".$min."m ".$sek."s";
```

Das gibt dann folgendes aus:

Zeit: 6t 6h 44m 17s


MfG

Psycho


----------



## goto; (18. November 2009)

Achso, jetzt hab ich es verstanden. Danke dir für deine Mühe


----------

