2

誰かが1シフトで20時間42分16秒、合計74536秒を実行します。その人がそのシフトのために行った秒数から時間を取得するにはどうすればよいですか?

20 * 60 * 60      =    72000
     42 * 60      =     2520
          16      =       16
                  +    -----
Total             =    74536
____________________________
Total % 60        =  Seconds (16)
Total % ?         =  Minutes (42)
Total % ?         =    Hours (20)

すでに84600を試しました。数値がモジュラスよりも低い場合、それは実際にはあまり役に立ちません。誰かが数秒間サインインするだけで、私がキャッチしなければならないことがあります...

4

2 に答える 2

5

モジュラスと除算の両方を使用する必要があります。

t = seconds_in_shift;
secs = t % 60;
t /= 60;
mins = t % 60;
t /= 60;
hour = t;

または:

secs =  ttime % 60;
mins = (ttime / 60) % 60;
hour =  ttime / 3600;

もう1つのオプションは、div()標準C(<stdlib.h>)の関数を使用します。

div_t v1 = div(ttime, 60);
div_t v2 = div(v1.quot, 60);

その後v1.rem、秒が含まれます。v2.rem分が含まv2.quotれ、元々の秒数に基づく時間が含まれttimeます。

于 2010-03-03T06:37:07.750 に答える
0

ジョナサンの返事に基づいて、正確な答えはこれであるはずだと私は信じています…

$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";

ただし、サーバーにPHP7がインストールされている場合は、intdiv()関数を使用できます。余りが破棄される整数除算。

// $hour = ($total_time - $min) / 60; old code but still works
$hour = intdiv($total_time, 60); // PHP7 and above code
于 2019-04-03T17:46:16.970 に答える