使用模数返回时间组件

问题描述 投票:2回答: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;事实证明,当一个数字低于模数时,它真的不是很有用,而且我必须要抓住的东西应该有人只能登录几秒钟......

time modulo epoch
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;

另一个选项使用标准C(div())的<stdlib.h>函数:

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

在那之后,v1.rem包含秒; v2.rem包含分钟,v2.quot包含基于ttime最初秒数的小时数。


0
投票

基于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
© www.soinside.com 2019 - 2024. All rights reserved.