有人在一个班次中完成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;事实证明,当一个数字低于模数时,它真的不是很有用,而且我必须要抓住的东西应该有人只能登录几秒钟......
你需要使用模数和除法:
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;
另一个选项使用标准C(div()
)的<stdlib.h>
函数:
div_t v1 = div(ttime, 60);
div_t v2 = div(v1.quot, 60);
在那之后,v1.rem
包含秒; v2.rem
包含分钟,v2.quot
包含基于ttime
最初秒数的小时数。
基于Jonathan的回复,我相信准确的答案应该是......
$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