Wiederkehrzeit-Komponenten mit Modulus
Frage
Jemand hat 20 Stunden 42 Minuten und 16 Sekunden in einer Schicht in Höhe von insgesamt 74.536 Sekunden. Wie erhalte ich die Stunden von Anzahl von Sekunden der Person für diese Verschiebung getan hat?
20 * 60 * 60 = 72000
42 * 60 = 2520
16 = 16
+ -----
Total = 74536
____________________________
Total % 60 = Seconds (16)
Total % ? = Minutes (42)
Total % ? = Hours (20)
Versuchte 84600 bereits; den Modul senken sich herausstellt, wenn eine Zahl ist, es ist wirklich nicht sehr hilfreich ist, und etwas, das ich zu fangen haben werde sollte jemand melden Sie nur für ein paar Sekunden ...
Lösung
Sie müssen sowohl Modul und Division verwenden:
t = seconds_in_shift;
secs = t % 60;
t /= 60;
mins = t % 60;
t /= 60;
hour = t;
Oder:
secs = ttime % 60;
mins = (ttime / 60) % 60;
hour = ttime / 3600;
Eine andere Option verwendet die div()
Funktion von Standard C ( <stdlib.h>
):
div_t v1 = div(ttime, 60);
div_t v2 = div(v1.quot, 60);
Danach enthält v1.rem
die Sekunden; v2.rem
enthält die Minuten und v2.quot
enthält die Stunden auf der Grundlage der Anzahl der Sekunden ursprünglich in ttime
.
Andere Tipps
Auf der Grundlage von Jonathan Antwort, glaube ich, die genaue Antwort auf dieses ...
sein sollte$total_time = 61000;
$sec = $total_time % 60;
$total_time = ($total_time - $sec) / 60;
$min = $total_time % 60;
$hour = ($total_time - $min) / 60;
echo "$hour hours, $min minutes and $sec seconds";
Aber wenn Ihr Server PHP7 installiert ist, können Sie die intdiv () Funktion. Eine ganze Zahl der Division in der der Rest wird verworfen.
// $hour = ($total_time - $min) / 60; old code but still works
$hour = intdiv($total_time, 60); // PHP7 and above code