2

有人在一个班次中完成 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;

另一种选择使用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 回答