Stellen Sie jedoch sicher, dass die Anzahl der Sekunden unter 86.400 liegt.
salathe
12
H steht für die Anzahl der Stunden an einem einzelnen Tag. Wenn Sie also 90000 Sekunden Zeit haben und H verwenden, ist das Ergebnis 01 (erste Stunde eines nächsten Tages). NICHT 25 - ein Tag hat nur 24 Stunden.
MarcinWolny
7
Ich bin mir nicht sicher, ob dies die richtige Antwort ist. Dies führt zu einem datetime... Wenn wir also ein Ergebnis> 24 Stunden erwarten, wird es nicht funktionieren. Auch wenn wir ein negatives Ergebnis benötigen (zum Beispiel mit Offset arbeiten), funktioniert es nicht. -1für die Lerche der Details
WonderLand
54
Dies sollte aufgrund des offensichtlichen Fehlers für Zeiten von mehr als 24 Stunden nicht die akzeptierte Antwort sein.
Scott Flack
10
Für die Verwendung mit Tagen, an denen die Zahlen möglicherweise größer als 85399 sind, können Sie verwenden. echo gmdate("z H:i:s", 685);Z ist die Anzahl der Tage im Jahr, die mit 0 beginnen. Sie können natürlich das PHP- Datumshandbuch lesen , um Ihren spezifischen Anforderungen gerecht zu werden.
Nightwolf
177
Eine Stunde ist 3600 Sekunden, eine Minute ist 60 Sekunden. Warum also nicht:
Gute Antwort, aber stellen Sie sicher, dass Sie zwischen den einzelnen Vorgängen $ Stunden * 3600 und $ Minuten * 60 von $ init abziehen, da Sie sonst Minuten und Sekunden doppelt zählen.
Mike Stowe
5
Verwenden Sie sprintfzum Hinzufügen zu @ Bernsteins Kommentar, um den Wert zurückzugeben, anstatt ihn zu drucken.
Allen Butler
77
Bitte schön
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
Funktioniert nicht für negative Werte. Wenn Sie ein negatives Sekundenintervall haben, verwenden Sie dieses:return ($t< 0 ? '-' : '') . sprintf("%02d%s%02d%s%02d", floor(abs($t)/3600), $f, (abs($t)/60)%60, $f, abs($t)%60); }
Ajax
66
Verwenden Sie die Funktion gmdate()nur, wenn die Sekunden kleiner als 86400(1 Tag) sind :
Andere Lösungen verwenden gmdate, scheitern jedoch in Randfällen, in denen Sie mehr als 86400 Sekunden haben. Um dies zu umgehen, können wir einfach die Anzahl der Stunden selbst gmdateberechnen und dann die verbleibenden Sekunden in Minuten / Sekunden berechnen lassen .
$ hms = gmdate ("H: i: s", 12720); Es reicht nicht aus, Tag-Stunde-Min-Sek.
Mogul
7
gmdate("H:i:s", no_of_seconds);
Gibt keine Zeit im H:i:sFormat an, wenn sie no_of_secondsgrößer als 1 Tag ist (Sekunden pro Tag).
Es wird den Tageswert vernachlässigen und nur gebenHour:Min:Seconds
Zum Beispiel:
gmdate("H:i:s",89922);// returns 0:58:42 not (1 Day 0:58:42) or 24:58:42
@barfoon - stimmt, aber ich glaube, das ist es, wonach M.Ezz gefragt hat, und es ist ein Standard, der in der Zeit verwendet wird. Das sieht aus meiner Erfahrung seltsam aus. "3: 7: 5" statt "03:07:05" oder sogar "3: 7" sieht für mich eher nach einem Verhältnis aus.
Kerry Jones
3
Die Funktion gmtdate () hat bei mir nicht funktioniert, da ich die an einem Projekt geleisteten Arbeitsstunden nachverfolgt habe. Wenn es mehr als 24 Stunden sind, wird der nach 24 Stunden verbleibende Betrag abgezogen. Mit anderen Worten, 37 Stunden werden 13 Stunden. (alles wie oben von Glavic angegeben - danke für Ihre Beispiele!) Dieser hat gut funktioniert:
Dieser Code vermeidet so weit wie möglich die mühsamen Funktionsaufrufe und das stückweise Erstellen von Zeichenfolgen sowie die großen und umfangreichen Funktionen, die die Leute dafür ausführen.
Es erzeugt das Format "1h05m00s" und verwendet führende Nullen für Minuten und Sekunden, solange eine andere Zeitkomponente ungleich Null vor ihnen steht.
Außerdem werden alle leeren führenden Komponenten übersprungen, um zu vermeiden, dass Sie nutzlose Informationen wie "0h00m01s" erhalten (stattdessen wird dies als "1s" angezeigt).
Wenn Sie den Code noch kürzer (aber weniger lesbar) machen möchten, können Sie das $convertedArray vermeiden und stattdessen die Werte wie folgt direkt in den Aufruf von sprintf () einfügen:
Die Dauer muss in beiden obigen Codeteilen 0 oder höher sein . Negative Dauern werden nicht unterstützt. Sie können jedoch mit negativen Dauern umgehen, indem Sie stattdessen den folgenden alternativen Code verwenden:
Beachten Sie, dass der gmdate()Hack noch kürzer ist, aber nur eine Dauer von bis zu 24 Stunden unterstützt. Alles über 24 Stunden schlägt fehl, wenn Sie den gmdate-Trick verwenden!
GW0
1
Eine einfache Möglichkeit, DateTime dafür zu verwenden, ist:
$given =685;/*
* In case $given == 86400, gmdate( "H" ) will convert it into '00' i.e. midnight.
* We would need to take this into consideration, and so we will first
* check the ratio of the seconds i.e. $given:$number_of_sec_in_a_day
* and then after multiplying it by the number of hours in a day (24), we
* will just use "floor" to get the number of hours as the rest would
* be the minutes and seconds anyways.
*
* We can also have minutes and seconds combined in one variable,
* e.g. $min_sec = gmdate( "i:s", $given );
* But for versatility sake, I have taken them separately.
*/
$hours =( $given >86399)?'0'.floor(( $given /86400)*24)-gmdate("H", $given ): gmdate("H", $given );
$min = gmdate("i", $given );
$sec = gmdate("s", $given );
echo $formatted_string = $hours.':'.$min.':'.$sec;
Wenn Sie dies in Javascript tun müssen, können Sie dies in nur einer Codezeile tun, wie hier beantwortet. Konvertieren Sie Sekunden mit JavaScript in HH-MM-SS . Ersetzen Sie SEKUNDEN durch das, was Sie konvertieren möchten.
var time =newDate(SECONDS *1000).toISOString().substr(11,8);
Nur für den Fall, dass jemand anderes nach einer einfachen Funktion sucht, um dieses gut formatierte Format zurückzugeben (ich weiß, dass es nicht das Format ist, nach dem das OP gefragt hat), habe ich mir das gerade ausgedacht. Vielen Dank an @mughal für den Code, auf dem dieser basiert.
seconds
in einedate/time
oder in eine Anzahl von Stunden umwandeln : Minute: Sekunden?Antworten:
Sie können die
gmdate()
Funktion verwenden:quelle
datetime
... Wenn wir also ein Ergebnis> 24 Stunden erwarten, wird es nicht funktionieren. Auch wenn wir ein negatives Ergebnis benötigen (zum Beispiel mit Offset arbeiten), funktioniert es nicht.-1
für die Lerche der Detailsecho gmdate("z H:i:s", 685);
Z ist die Anzahl der Tage im Jahr, die mit 0 beginnen. Sie können natürlich das PHP- Datumshandbuch lesen , um Ihren spezifischen Anforderungen gerecht zu werden.Eine Stunde ist 3600 Sekunden, eine Minute ist 60 Sekunden. Warum also nicht:
welches produziert:
(Ich habe nicht so viel getestet, daher kann es zu Fehlern mit dem Boden oder so kommen.)
quelle
printf("%02d:%02d:%02d", $hours, $minutes, $seconds);
sprintf
zum Hinzufügen zu @ Bernsteins Kommentar, um den Wert zurückzugeben, anstatt ihn zu drucken.Bitte schön
quelle
return ($t< 0 ? '-' : '') . sprintf("%02d%s%02d%s%02d", floor(abs($t)/3600), $f, (abs($t)/60)%60, $f, abs($t)%60); }
Verwenden Sie die Funktion
gmdate()
nur, wenn die Sekunden kleiner als86400
(1 Tag) sind :Siehe: gmdate ()
Führen Sie die Demo aus
Konvertieren Sie Sekunden in ein Format mit 'Fuß' ohne Limit * :
Siehe: floor () , sprintf () , arithmetische Operatoren
Führen Sie die Demo aus
Beispiel für die Verwendung der
DateTime
Erweiterung:Siehe: DateTime :: __ construct () , DateTime :: modify () , clone , sprintf ()
Führen Sie die Demo aus
Der MySQL-Beispielbereich des Ergebnisses ist auf den Datentyp TIME beschränkt, der von
-838:59:59
bis reicht838:59:59
:Siehe: SEC_TO_TIME
Führen Sie die Demo aus
PostgreSQL-Beispiel:
Führen Sie die Demo aus
quelle
Andere Lösungen verwenden
gmdate
, scheitern jedoch in Randfällen, in denen Sie mehr als 86400 Sekunden haben. Um dies zu umgehen, können wir einfach die Anzahl der Stunden selbstgmdate
berechnen und dann die verbleibenden Sekunden in Minuten / Sekunden berechnen lassen .Eingabe:
6030
Ausgabe:1:40:30
Eingabe:
2000006030
Ausgabe:555557:13:50
quelle
quelle
Gibt keine Zeit im
H:i:s
Format an, wenn sieno_of_seconds
größer als 1 Tag ist (Sekunden pro Tag).Es wird den Tageswert vernachlässigen und nur geben
Hour:Min:Seconds
Zum Beispiel:
quelle
Hier ist ein Einzeiler, der negative Sekunden und Sekunden im Wert von mehr als einem Tag verarbeitet.
Zum Beispiel:
Ausgänge: -26: 03: 04
quelle
Schreibfunktion wie diese, um ein Array zurückzugeben
Rufen Sie dann einfach die Funktion folgendermaßen auf:
Ausgabe ist
quelle
Wenn Sie akzeptierte oder beliebte Antworten nicht mögen, probieren Sie diese aus
quelle
Sehen:
Von: Konvertieren Sie Sekunden in Tage, Stunden, Minuten und Sekunden
quelle
Versuche dies:
Entnommen aus
http://bytes.com/topic/php/answers/3917-seconds-converted-hh-mm-ss
quelle
Die Funktion gmtdate () hat bei mir nicht funktioniert, da ich die an einem Projekt geleisteten Arbeitsstunden nachverfolgt habe. Wenn es mehr als 24 Stunden sind, wird der nach 24 Stunden verbleibende Betrag abgezogen. Mit anderen Worten, 37 Stunden werden 13 Stunden. (alles wie oben von Glavic angegeben - danke für Ihre Beispiele!) Dieser hat gut funktioniert:
quelle
Diese Funktion kann nützlich sein, Sie können sie erweitern:
quelle
Lösung von: https://gist.github.com/SteveJobzniak/c91a8e2426bac5cb9b0cbc1bdbc45e4b
Hier ist eine sehr saubere und kurze Methode!
Dieser Code vermeidet so weit wie möglich die mühsamen Funktionsaufrufe und das stückweise Erstellen von Zeichenfolgen sowie die großen und umfangreichen Funktionen, die die Leute dafür ausführen.
Es erzeugt das Format "1h05m00s" und verwendet führende Nullen für Minuten und Sekunden, solange eine andere Zeitkomponente ungleich Null vor ihnen steht.
Außerdem werden alle leeren führenden Komponenten übersprungen, um zu vermeiden, dass Sie nutzlose Informationen wie "0h00m01s" erhalten (stattdessen wird dies als "1s" angezeigt).
Beispielergebnisse: "1s", "1m00s", "19m08s", "1h00m00s", "4h08m39s".
Wenn Sie den Code noch kürzer (aber weniger lesbar) machen möchten, können Sie das
$converted
Array vermeiden und stattdessen die Werte wie folgt direkt in den Aufruf von sprintf () einfügen:Die Dauer muss in beiden obigen Codeteilen 0 oder höher sein . Negative Dauern werden nicht unterstützt. Sie können jedoch mit negativen Dauern umgehen, indem Sie stattdessen den folgenden alternativen Code verwenden:
quelle
gmdate()
Hack noch kürzer ist, aber nur eine Dauer von bis zu 24 Stunden unterstützt. Alles über 24 Stunden schlägt fehl, wenn Sie den gmdate-Trick verwenden!Eine einfache Möglichkeit, DateTime dafür zu verwenden, ist:
Es ist eine einfache Lösung, mit der Sie die Formatmethode von DateTime verwenden können.
quelle
In Java können Sie diesen Weg verwenden.
quelle
quelle
Nun, ich brauchte etwas, das Sekunden in Stunden, Minuten und Sekunden reduziert, aber 24 Stunden überschreitet und nicht weiter in Tage reduziert.
Hier ist eine einfache Funktion, die funktioniert. Sie können es wahrscheinlich verbessern ... Aber hier ist es:
quelle
So konvertieren Sie es in eine Funktion:
quelle
Wenn Sie dies in Javascript tun müssen, können Sie dies in nur einer Codezeile tun, wie hier beantwortet. Konvertieren Sie Sekunden mit JavaScript in HH-MM-SS . Ersetzen Sie SEKUNDEN durch das, was Sie konvertieren möchten.
quelle
Wenn Sie eine Audio- / Videodauer wie YouTube usw. erstellen möchten, haben Sie folgende Möglichkeiten:
($seconds >= 60) ? ltrim(gmdate("H:i:s", $seconds), ":0") : gmdate("0:s", $seconds)
Gibt Zeichenfolgen zurück wie:
Funktioniert wahrscheinlich nicht gut für die Zeit> = 24 Stunden.
quelle
Dies ist ein hübscher Weg, um das zu tun:
quelle
Nur für den Fall, dass jemand anderes nach einer einfachen Funktion sucht, um dieses gut formatierte Format zurückzugeben (ich weiß, dass es nicht das Format ist, nach dem das OP gefragt hat), habe ich mir das gerade ausgedacht. Vielen Dank an @mughal für den Code, auf dem dieser basiert.
quelle
Wer dies in Zukunft sucht, gibt dem Format das gewünschte Erstplakat.
quelle
quelle