Unix Timestamp berechnen

bomberpilotmp3

Erfahrenes Mitglied
Hallo,

hab ein kleines Problem. Ich lese aus einer Datenbank einen Unix Timestamp aus. Nun möchte ich die Vergange Zeit berechnen. Klappt soweit ganz ordentlich.

Nur ich möchte das er solches Ergebnis erzielt: Verganges Zeit: 12 Minuten, 3 Sekunden.
Momentan gibt er es so aus: Vergangende Zeit: 12 Minuten

Ich komme mit dem Rechnen nicht ganz klar. Könnt ihr mir einen Gedankenstoß verpassen? *Aber ned so dolle :-)*

PHP:
echo ___calc_diff('1205525732');


# Zeitberechnung
function ___calc_diff($calc_diff) {
   $calc_diff = time() - $calc_diff;

   if ($calc_diff > 604800) {
       $calc_return = ceil($calc_diff / 604800).' Wochen, '.($calc_diff / 86400).' Tage, '.($calc_diff / 3600).' Stunden, '.($calc_diff / 60).' Minuten, '.($calc_diff).' Sekunden';
   } elseif ($calc_diff > 86400) {
       $calc_return = ceil($calc_diff / 86400).' Tage, '.($calc_diff / 3600).' Stunden, '.($calc_diff / 60).' Minuten, '.($calc_diff).' Sekunden';
   } elseif ($calc_diff > 3600) {
       $calc_return = ceil($calc_diff / 3600).' Stunden, '.($calc_diff / 60).' Minuten,'.($calc_diff).' Sekunden';
   } elseif ($calc_diff > 60) {
       $calc_return = ceil($calc_diff / 60).' Minuten, '.($calc_diff).' Sekunden';
   } elseif ($calc_diff < 60) {
       $calc_return = intval($calc_diff).' Sekunden';
   }

 return $calc_return;
}

Gruß
 
Hi du musst das schachteln

PHP:
if( $t > (60){

//sekunden

     if($t > (60*60){

       //minuten

     }
.....
}

sonst wäht er nur einen aus

gruß

kato
 
Zuletzt bearbeitet:
Wenn du die vergangene Zeit berechnen möchtest, kannst du dann nicht einfach date() von der Differenz der beiden Timestamps (aktuelle und ausgelesene Zeit) machen?

PHP:
<?php
   $ausgelesener_timestamp=1205525732;
   echo('Vergangene Zeit: ');
   echo(date('H:i:s', time() - $ausgelesener_timestamp);
?>

mfg Blackdragon
 
Also erstmal rundet Ceil auf. Aus 4.3 stunden werden also 5. Das willst du aber glaube ich nicht. -> floor()

Du Rechnest jetzt z.B.die Wochen aus. Dann musst du allerdings die Sekunden die diese Wochen verbraucht haben von deinem $calc_diff abziehen. Sonst bekommste jetzt z.B. 3 Wochen 200 Stunden 4444 Minuten.

Ich würde die Funktion anderster aufbauen. Immer schön EVA.

Wenn du deine Lösung gefunden hast, kannst du dir ja mal meine ansehen:
Die Variable $hoeher hat hierbei 2 Funktionen.
1. Sie sorgt dafür das alle kleineren Zeiteinheiten als eine Vorhandene mit aufgeführt. Beispiel:

ohne $hoeher:
4 Minuten

mit $hoeher
4 Minuten, 0 Sekunden

2. Sie sorgt dafür das ein Komma nur gemacht wird wenn auch eine Höhere Zeiteinheit mit dabei ist
Beispiel:

ohne $hoeher:
, 4 Minuten, 0 Sekunden

mit $hoeher:
4 Minuten, 0 Sekunden

<?PHP

echo ___calc_diff('1205525732');


# Zeitberechnung
function ___calc_diff($calc_diff) {
$calc_diff = time() - $calc_diff;

$Wochen=floor($calc_diff/604800);
$calc_diff=$calc_diff-floor($calc_diff/604800)*604800;

$tage=floor($calc_diff/86400);
$calc_diff=$calc_diff-floor($calc_diff/86400)*86400;

$stunden=floor($calc_diff/3600);
$calc_diff=$calc_diff-floor($calc_diff/3600)*3600;

$minuten=floor($calc_diff/60);
$calc_diff=$calc_diff-floor($calc_diff/60)*60;

if($wochen) {$calc_return=$calc_return . $wochen . " Wochen";$hoeher=", ";}
if($tage || $hoeher) {$calc_return=$calc_return . $hoeher . $tage . " Tage";$hoeher=", ";}
if($stunden || $hoeher) {$calc_return=$calc_return . $hoeher . $stunden . " Stunden";$hoeher=", ";}
if($minuten || $hoeher) {$calc_return=$calc_return . $hoeher . $minuten . " Minuten";$hoeher=", ";}
if($calc_diff ||$hoeher){$calc_return=$calc_return . $hoeher . $calc_diff . " Sekunden";}

return $calc_return;
}


?>
 
Vielen Dank, ich habe den Fehler gefunden okay stimmt. ICh muss die wirklich verschachteln weil ich sonst keine Möglichkeit habe, diese beim Wert X in Y auszulesen.

Crahack Danke dir deins Funktioniert natürlich auch ;)
 
Zurück