【问题标题】:How to convert given seconds to hours minutes seconds format in php in custom way?如何以自定义方式将给定的秒数转换为 php 中的时分秒格式?
【发布时间】:2017-01-12 07:22:01
【问题描述】:

我将获得随机秒数,该数字可能大于 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 的输出 $ts = 80944;
一切都很好,但对于 $ts = 39540; 输出是 10Hr 58min 60sec 这里是 60sec,这是错误的。它应该像 10Hr 59min 0sec. 我的代码有什么问题?

【问题讨论】:

  • 工作正常:- eval.in/714758
  • 对于$ts = 99545;,我从我的代码中得到27Hr 39min 5sec,但是当我使用gmdate()时,输出是3:39:05这不适合我的场景。

标签: php time date-conversion


【解决方案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】:

    我已经修改了代码来检查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】:

      你可以通过模数计算来做到这一点:

      $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

      【讨论】:

        【解决方案4】:
        echo gmdate("H:i:s", 39540);
        

        使用这个

        【讨论】:

        • 看问题。他说他用过
        • 如果秒值小于 86400(即 24 小时),它工作正常。但我可能会得到 30Hr 24min 30sec 这样的东西。通过使用gmdate(),我没有得到想要的输出。理解我的问题。
        猜你喜欢
        • 1970-01-01
        • 2013-06-08
        • 2021-01-14
        • 2015-05-30
        • 2021-01-28
        • 1970-01-01
        • 1970-01-01
        • 2010-12-22
        • 2021-07-20
        相关资源
        最近更新 更多