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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)