Problem mit der Zeit.

Asteria

Mitglied
Hallo zusammen !

Ich versuche einen Script zu schreiben..
Dem Script wird per GET eine Variable übergeben,
die einen Wert in Sekunden zum Beispiel 165 beinhaltet.

Diesen Wert möchte ich jetzt im Format H:M:S ausgeben,
sozusagen als Restzeit. In diesem Beispielfall also:
0:02:45, ob eine oder 2 Nullen am Anfang (in den Stunden)
ist ziemlich egal eigentlich ;))

Jemand 'ne Idee, wie ich das lösen kann?
Danke schonmal vielmals !
Und beste Grüße
 
PHP:
<?php 
/**
 * Berechnet die Sekunden in ein HMS-Format um
 * 
 * @param int $seconds Die Sekunden
 * @return string Die HMS-Zeit
 */
function getSecondsAsHRTime($seconds)
{
	$rest = $seconds;									// Rest merken
  $hours = (int)($seconds / 3600);  // Stunden berechnen
  $rest = ($rest - $hours * 3600);  // Rest merken
  $minutes = (int)($rest / 60);     // Minuten berechnen
  $rest = ($rest - $minutes * 60);  // Rest merken 
  $seconds = $rest;									// Rest entspricht Sekunden

  // Ausgabe zusammen bauen 
  return sprintf("%02d:%02d:%02d", $hours, $minutes, $seconds);
}

// Tests
echo getSecondsAsHRTime(3765) . "<br>";
echo getSecondsAsHRTime(27) . "<br>";
echo getSecondsAsHRTime(1443) . "<br>";

?>
Hat Spaß gemacht :-)
 
Ich habe mal die Funktion von saftmeister um Tage erweitert und ein wenig dem Format von [phpf]date[/phpf] angepasst:
PHP:
function date_sec($format, $seconds)
{
  $rest = $seconds;
  
  $days = floor($seconds / 86400);
  $rest = ($rest - $days * 86400);
  
  $hours = floor($rest / 3600);
  $rest = ($rest - $hours * 3600);
  
  $minutes = floor($rest / 60);
  $rest = ($rest - $minutes * 60);
  
  $seconds = $rest;
  
  $format = str_replace("%d%", (string)$days, $format);
  $format = str_replace("%h%", (string)$hours, $format);
  $format = str_replace("%i%", (string)$minutes, $format);
  $format = str_replace("%s%", (string)$seconds, $format);
  return $format;
}

echo date_sec("Tage %d%<br />Stunden %h%<br />Minuten %i%<br />Sekunden %s%", 86460);
echo date_sec("d:h:min:s<br/>%d%:%h%:%i%:%s%", 100);
Natürlich fehlen die Kommentare, falls jemand Fragen hat, kann er sie ruhig stellen ;)
 
Zuletzt bearbeitet:
Hallo,
saftmeister hat gesagt.:
Nur so als Gedankenanstoß: MODULO!
... damit könnte man sich die Subtraktionen sparen:
PHP:
function getSecondsAsHRTime($seconds)
{
  $minutes = intval($seconds / 60);     // Minuten berechnen
  $seconds %= 60;                       // Rest entspricht Sekunden
  $hours = intval($minutes / 60);       // Stunden berechnen
  $minutes %= 60;                       // Rest entspricht Minuten

  // Ausgabe zusammen bauen
  return sprintf("%02d:%02d:%02d", $hours, $minutes, $seconds);
}
 
Zurück