我将获得随机秒数,该数字可能大于86400,大于24小时(转换为小时),因此php gmdate()
无法获得我所需的输出。所以我创建了以下代码。
$ts = mt_rand(36000,99999);
echo floor($ts/3600)."Hr ".floor(($ts/3600 - floor($ts/3600))*60)."min ".round(((($ts/3600 - floor($ts/3600))*60) - floor(($ts/3600 - floor($ts/3600))*60))*60)."sec";
$ ts = 80944 , 22Hr 29min 4sec 输出 $ ts = 80944; 一切都很好但是对于 $ ts = 39540; 输出来的是 10Hr 58min 60sec 这里60秒来了,这是错误的。它应该像 10Hr 59min 0sec。我的代码出了什么问题?
答案 0 :(得分:1)
echo gmdate("H:i:s", 39540);
使用此
答案 1 :(得分:1)
我没有分开你的代码以找出问题所在,但我相信这解决了这个问题。
$ts = mt_rand(36000,99999);
$h = floor($ts / 3600);
$m = floor(($ts - 3600 * $h) / 60);
$s = $ts - ($h * 3600) - ($m * 60);
echo $h . "Hr " . $m . "Min " . $s . "s";
答案 2 :(得分:0)
我修改了代码以检查secs的值是否为60,因为在计算分钟时由于圆形已经计算了
$ts = 80944; //mt_rand(36000,99999);
echo floor($ts/3600)."Hr ". round(($ts/3600 - floor($ts/3600))*60)."min ";
echo (round(((($ts/3600 - floor($ts/3600))*60) - floor(($ts/3600 - floor($ts/3600))*60))*60) == 60) ? '0' : round(((($ts/3600 - floor($ts/3600))*60) - floor(($ts/3600 - floor($ts/3600))*60))*60)."sec";
答案 3 :(得分:0)
嘿,你可以用模数计算来做到这一点:
$secondsGiven = 1036899;
$outputSeconds = $secondsGiven % 60;
$minutes = ($secondsGiven-$outputSeconds) / 60 ;
$outputMinutes = $minutes % 60;
$hours = ($minutes - $outputMinutes) / 60;
$outputHours= $hours % 24;
$outputDays = $outputHours / 24;
echo $outputDays . 'Days ' . $outputHours . 'HR ' . $outputMinutes . 'min ' . $outputSeconds . 'sec';
此示例将输出: 12天0小时1分39秒