Zeit formatieren

Hallo Leute,
ich habe mal eine kleine Frage. Ich bekomme als Antwort von meinem Voice-Server die Uptime in Sekunden, z.B. „1348033“.

Jetzt möchte ich diese Dauer in „xx Tage, xx Stunden, xx Minuten, xx Sekunden“ umwandeln. Wie lässt sich das am kürzesten anstellen? :smiley:

Mfg smdata2

[B]so problem ist gelöst:

[/B][php]function formatTime($anz_sekunden){
$uptime = „“;

$days = floor($anz_sekunden/86400);
$hours = floor(($anz_sekunden-(floor($anz_sekunden/86400)*86400))/3600);
$minutes = floor(($anz_sekunden-(floor($anz_sekunden/3600)*3600))/60);
$seconds = floor($anz_sekunden-(floor($anz_sekunden/60))*60); 
      
if ($days < 10) $day = '0'.$days;
if ($hours < 10) $hours = '0'.$hours;
if ($minutes < 10) $minutes = '0'.$minutes;
if ($seconds < 10) $seconds = '0'.$seconds;

if($days > 0) $uptime = $days." Tagen, ".$hours." Stunden, ".$minutes." Minuten, ".$seconds." Sekunden";
else $uptime = $uptime = $hours." Stunden, ".$minutes." Minuten, ".$seconds." Sekunden";
      
return $uptime; 

}[/php]

Mit runden? Das kann aber ganz schön in die Hose gehen…

[PHP]
function postFixes($element) {
if($element != 1) return „n“;
return „“;
}
function formatSeconds($seconds) {
$times = array($seconds, 0, 0, 0);
while($times[0] > 59) {
$times[1]++;
$times[0] -= 60;
}
while($times[1] > 59) {
$times[2]++;
$times[1] -= 60;
}
while($times[2] > 23) {
$times[3]++;
$times[2] -= 24;
}
$postfixes = array_map(„postFixes“, $times);
$postfixes[3] = ($times[3] != 0) ? „en“ : „“;
$times = array_map(„str_pad“,$times ,array(2,2,2,2), array(0,0,0,0), array(STR_PAD_LEFT,STR_PAD_LEFT,STR_PAD_LEFT,STR_PAD_LEFT));
return
$times[3]." Tag".$postfixes[3].„, „.
$times[2].“ Stunde“.$postfixes[2].„, „.
$times[1].“ Minute“.$postfixes[1].„, „.
$times[0].“ Sekunde“.$postfixes[0];
}[/PHP]

thx Frank für deine Lösung … aber was kann da deiner meinung nach schiefgehen?

Naja wenn das teilen net aufgeht und du rundest ab fehlt dir vlt ne sekunde oder ne minute etc.

Schau nochmal hin, da wird nicht gerundet.
Ist schon in Ordnung so.