如何以自定义方式将 php 中的给定秒数转换为时分秒格式?

How to convert given seconds to hours minutes seconds format in php in custom way?

我将获得随机秒数,该数字可能大于 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";

我得到的输出类似于 22Hr 29min 4sec for $ts = 80944;
一切都很好,但是 $ts = 39540; 输出是 10Hr 58min 60sec 这里 60sec 是错误的。它应该像 10Hr 59min 0sec. 我的代码有什么问题?

echo gmdate("H:i:s", 39540);

使用这个

我并没有分解你的代码来找出问题所在,但我相信这可以解决问题。

$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";

我已经修改了代码来检查秒的值是否为 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";

嘿,你可以用模计算来做:

$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';

这个例子会输出:12Days 0Hr 1min 39sec