Компоненты времени возврата с модулем - PullRequest
2 голосов
/ 03 марта 2010

Кто-то делает 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; Оказывается, когда число ниже модуля, это действительно не очень полезно, и что-то, что я собираюсь поймать, если кто-то войдет в систему только в течение нескольких секунд ...

Ответы [ 2 ]

5 голосов
/ 03 марта 2010

Вам необходимо использовать как модуль, так и деление:

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;

В другом варианте используется функция div() из стандарта C(<stdlib.h>):

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

После этого v1.rem содержит секунды;v2.rem содержит минуты, а v2.quot содержит часы, основанные на количестве секунд, первоначально в ttime.

0 голосов
/ 03 апреля 2019

Основываясь на ответе Джонатана, я считаю, что точный ответ должен быть следующим:

$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
...