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?

858voto

animuson Punkte 52328

Sie können die gmdate() Funktion:

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

202voto

Aif Punkte 10605

Eine Stunde dauert 3600 Sekunden, eine Minute 60 Sekunden, warum also nicht:

<?php

$init = 685;
$hours = floor($init / 3600);
$minutes = floor(($init / 60) % 60);
$seconds = $init % 60;

echo "$hours:$minutes:$seconds";

?>

die produziert:

$ php file.php
0:11:25

(Ich habe dies nicht viel getestet, so kann es Fehler mit dem Boden oder so sein)

93voto

nathan Punkte 5312

Hier ist es

function format_time($t,$f=':') // t = seconds, f = separator 
{
  return sprintf("%02d%s%02d%s%02d", floor($t/3600), $f, ($t/60)%60, $f, $t%60);
}

echo format_time(685); // 00:11:25

75voto

Glavić Punkte 41095

Funktion verwenden gmdate() nur wenn die Sekunden kleiner sind als 86400 (1 Tag) :

$seconds = 8525;
echo gmdate('H:i:s', $seconds);
# 02:22:05

Siehe: gmdate()

Führen Sie die Demo aus


Sekunden in das Format "Fuß" umrechnen keine Begrenzung* :

$seconds = 8525;
$H = floor($seconds / 3600);
$i = ($seconds / 60) % 60;
$s = $seconds % 60;
echo sprintf("%02d:%02d:%02d", $H, $i, $s);
# 02:22:05

Siehe: floor() , sprintf() , arithmetische Operatoren

Führen Sie die Demo aus


Beispiel für die Verwendung von DateTime Erweiterung:

$seconds = 8525;
$zero    = new DateTime("@0");
$offset  = new DateTime("@$seconds");
$diff    = $zero->diff($offset);
echo sprintf("%02d:%02d:%02d", $diff->days * 24 + $diff->h, $diff->i, $diff->s);
# 02:22:05

Siehe: DateTime::__construct() , DateTime::modify() , klonen. , sprintf()

Führen Sie die Demo aus


MySQL-Beispiel Der Bereich des Ergebnisses ist auf den des Datentyps TIME beschränkt, der von -838:59:59 a 838:59:59 :

SELECT SEC_TO_TIME(8525);
# 02:22:05

Siehe: SEC_TO_TIME

Führen Sie die Demo aus


PostgreSQL-Beispiel:

SELECT TO_CHAR('8525 second'::interval, 'HH24:MI:SS');
# 02:22:05

Führen Sie die Demo aus

47voto

RaDim Punkte 590

Andere Lösungen verwenden gmdate , scheitert aber in Grenzfällen, in denen mehr als 86400 Sekunden zur Verfügung stehen. Um dies zu umgehen, können wir einfach die Anzahl der Stunden selbst berechnen und dann gmdate die verbleibenden Sekunden in Minuten/Sekunden umrechnen.

echo floor($seconds / 3600) . gmdate(":i:s", $seconds % 3600);

Eingabe: 6030 Ausgabe: 1:40:30

Eingabe: 2000006030 Ausgabe: 555557:13:50

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