Convert seconds into days, hours, minutes and seconds

后端 未结 24 2527
说谎
说谎 2020-11-22 16:30

I would like to convert a variable $uptime which is seconds, into days, hours, minutes and seconds.

Example:



        
24条回答
  •  -上瘾入骨i
    2020-11-22 16:47

    All in one solution. Gives no units with zeroes. Will only produce number of units you specify (3 by default). Quite long, perhaps not very elegant. Defines are optional, but might come in handy in a big project.

    define('OneMonth', 2592000);
    define('OneWeek', 604800);  
    define('OneDay', 86400);
    define('OneHour', 3600);    
    define('OneMinute', 60);
    
    function SecondsToTime($seconds, $num_units=3) {        
        $time_descr = array(
                    "months" => floor($seconds / OneMonth),
                    "weeks" => floor(($seconds%OneMonth) / OneWeek),
                    "days" => floor(($seconds%OneWeek) / OneDay),
                    "hours" => floor(($seconds%OneDay) / OneHour),
                    "mins" => floor(($seconds%OneHour) / OneMinute),
                    "secs" => floor($seconds%OneMinute),
                    );  
    
        $res = "";
        $counter = 0;
    
        foreach ($time_descr as $k => $v) {
            if ($v) {
                $res.=$v." ".$k;
                $counter++;
                if($counter>=$num_units)
                    break;
                elseif($counter)
                    $res.=", ";             
            }
        }   
        return $res;
    }
    

    Feel free to down-vote, but be sure to try it in your code. It might just be what you need.

提交回复
热议问题