donglu2523 2013-02-06 04:16 采纳率: 100%
浏览 83
已采纳

PHP将秒转换为MM:DD:HH:MM:SS [重复]

This question already has an answer here:

I would like some help converting seconds into a MM:DD:HH:MM:SS format.

I have this code here:

<?php
    // Convert seconds into months, days, hours, minutes, and seconds.
    function secondsToTime($ss) {
    $s = $ss%60;
    $m = floor(($ss%3600)/60);
    $h = floor(($ss%86400)/3600);
    $d = floor(($ss%2592000)/86400);
    $M = floor($ss/2592000);

    return "$M months, $d days, $h hours, $m minutes, $s seconds";
    }
?>

It outputs an example of

0 months, 1 days, 3 hours, 46 minutes, 39 seconds

I would just like it to be something like

00:01:03:46:39

How can I do that?

</div>
  • 写回答

3条回答 默认 最新

  • dqwh1219 2013-02-06 04:23
    关注

    From what I gather, it looks like you're interested in returning a string with values containing two digits separaed by colons. Assuming the positioning doesn't need to change, you can do something similar to the following:

    <?php
    // Prefix single-digit values with a zero.
    function ensure2Digit($number) {
        if($number < 10) {
            $number = '0' . $number;
        }
        return $number;
    }
    
    // Convert seconds into months, days, hours, minutes, and seconds.
    function secondsToTime($ss) {
        $s = ensure2Digit($ss%60);
        $m = ensure2Digit(floor(($ss%3600)/60));
        $h = ensure2Digit(floor(($ss%86400)/3600));
        $d = ensure2Digit(floor(($ss%2592000)/86400));
        $M = ensure2Digit(floor($ss/2592000));
    
        return "$M:$d:$h:$m:$s";
    }
    

    Or if you don't like the thought of having one more function to manage, perhaps this may suit you better:

    <?php
    // Convert seconds into months, days, hours, minutes, and seconds.
    function secondsToTime($ss) {
        $s = $ss%60;
        $m = floor(($ss%3600)/60);
        $h = floor(($ss%86400)/3600);
        $d = floor(($ss%2592000)/86400);
        $M = floor($ss/2592000);
    
        // Ensure all values are 2 digits, prepending zero if necessary.
        $s = $s < 10 ? '0' . $s : $s;
        $m = $m < 10 ? '0' . $m : $m;
        $h = $h < 10 ? '0' . $h : $h;
        $d = $d < 10 ? '0' . $d : $d;
        $M = $M < 10 ? '0' . $M : $M;
    
        return "$M:$d:$h:$m:$s";
    }
    

    And then to call our function (whichever method you decide to use):

    <?php
    
    $ss = 123456;
    print secondsToTime($ss);
    
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog