398 Stimmen

Sekunden umrechnen in Stunde:Minute:Sekunde

Ich muss Sekunden in "Stunde:Minute:Sekunde" umrechnen.

Zum Beispiel: "685" umgewandelt in "00:11:25"

Wie kann ich das erreichen?

17voto

mughal Punkte 171
// TEST
// 1 Day 6 Hours 50 Minutes 31 Seconds ~ 111031 seconds

$time = 111031; // time duration in seconds

$days = floor($time / (60 * 60 * 24));
$time -= $days * (60 * 60 * 24);

$hours = floor($time / (60 * 60));
$time -= $hours * (60 * 60);

$minutes = floor($time / 60);
$time -= $minutes * 60;

$seconds = floor($time);
$time -= $seconds;

echo "{$days}d {$hours}h {$minutes}m {$seconds}s"; // 1d 6h 50m 31s

9voto

Eranda Punkte 804

Wenn Ihnen die akzeptierte Antwort oder die gängigen Antworten nicht gefallen, versuchen Sie diese

function secondsToTime($seconds_time)
{
    if ($seconds_time < 24 * 60 * 60) {
        return gmdate('H:i:s', $seconds_time);
    } else {
        $hours = floor($seconds_time / 3600);
        $minutes = floor(($seconds_time - $hours * 3600) / 60);
        $seconds = floor($seconds_time - ($hours * 3600) - ($minutes * 60));
        return "$hours:$minutes:$seconds";
    }
}

secondsToTime(108620); // 30:10:20

7voto

Vikash Kumar Punkte 457
gmdate("H:i:s", no_of_seconds);

Gibt keine Zeit in H:i:s Format wenn no_of_seconds größer als 1 Tag ist (Sekunden pro Tag).
Sie wird den Tageswert vernachlässigen und nur Hour:Min:Seconds

Zum Beispiel:

gmdate("H:i:s", 89922); // returns 0:58:42 not (1 Day 0:58:42) or 24:58:42

7voto

Benjamin Punkte 61

Hier ist ein One-Liner, der mit negativen Sekunden und mehr als einem Tageswert an Sekunden arbeitet.

sprintf("%s:%'02s:%'02s\n", intval($seconds/60/60), abs(intval(($seconds%3600) / 60)), abs($seconds%60));

Zum Beispiel:

$seconds= -24*60*60 - 2*60*60 - 3*60 - 4; // minus 1 day 2 hours 3 minutes 4 seconds
echo sprintf("%s:%'02s:%'02s\n", intval($seconds/60/60), abs(intval(($seconds%3600) / 60)), abs($seconds%60));

Ausgänge: -26:03:04

6voto

Mannu saraswat Punkte 975

Ich habe dies bereits erklärt aquí Ich füge diese Antwort auch hier ein

Für bis 23:59:59 Stunden können Sie die PHP-Standardfunktion

echo gmdate("H:i:s", 86399);

die nur das Ergebnis bis 23:59:59

Wenn Ihre Sekunden mehr als 86399 sind, dann mit Hilfe von @VolkerK beantworten

$time = round($seconds);
echo sprintf('%02d:%02d:%02d', ($time/3600),($time/60%60), $time%60);

sind die besten Optionen für die Verwendung ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X