seconds to minutes and days to weeks

后端 未结 3 1704
时光说笑
时光说笑 2020-12-19 19:26

My question is, how with PHP we can have an automated system, which can do this: If we have $seconds= 120; And the script should get this value, see that this

3条回答
  •  庸人自扰
    2020-12-19 20:24

    4 week(s) 6 day(s) 53 hour(s) 20 min(s)

    53 hour(s) ? also, 300000 seconds is 3 days 11hrs, not 3 days 23hrs

    function formatSeconds($secs) {
    
        if (!$secs = (int)$secs)
            return '0 seconds';
    
        $units = array(
            'week' => 604800,
            'day' => 86400,
            'hour' => 3600,
            'minute' => 60,
            'second' => 1
        );
    
        $strs = array();
    
        foreach($units as $name=>$int){
            if($secs < $int)
                continue;
            $num = (int) ($secs / $int);
            $secs = $secs % $int;
            $strs[] = "$num $name".(($num == 1) ? '' : 's');
        }
    
        return implode(', ', $strs);
    }
    
    var_dump(formatSeconds(0));
    var_dump(formatSeconds(30));
    var_dump(formatSeconds(300));
    var_dump(formatSeconds(3000));
    var_dump(formatSeconds(30000));
    var_dump(formatSeconds(300000));
    var_dump(formatSeconds(3000000));
    var_dump(formatSeconds(30000000));
    
    
    string(9) "0 seconds"
    string(10) "30 seconds"
    string(9) "5 minutes"
    string(10) "50 minutes"
    string(19) "8 hours, 20 minutes"
    string(28) "3 days, 11 hours, 20 minutes"
    string(37) "4 weeks, 6 days, 17 hours, 20 minutes"
    string(37) "49 weeks, 4 days, 5 hours, 20 minutes"
    

提交回复
热议问题