代码之家  ›  专栏  ›  技术社区  ›  noufalcep XcentY

如何在Laravel[duplicate]中将秒转换为天小时分钟

  •  18
  • noufalcep XcentY  · 技术社区  · 7 年前

    我想把以秒为单位的时间间隔转换成天小时分钟。我已经试过了。

    $value = '90060';
    CarbonInterval::seconds($value)->forHumans();
    

    我得到了输出

    90060 seconds
    

    1 day 1 hour 1 minute
    

    如何使用 Carbon CarbonInterval

    5 回复  |  直到 7 年前
        1
  •  37
  •   noufalcep XcentY    5 年前

    我有一个解决方案。

    $value = '90060';
    $dt = Carbon::now();
    $days = $dt->diffInDays($dt->copy()->addSeconds($value));
    $hours = $dt->diffInHours($dt->copy()->addSeconds($value)->subDays($days));
    $minutes = $dt->diffInMinutes($dt->copy()->addSeconds($value)->subDays($days)->subHours($hours));
    echo CarbonInterval::days($days)->hours($hours)->minutes($minutes)->forHumans();
    

    更新的解决方案

    CarbonInterval::seconds(90060)->cascade()->forHumans();
    
        2
  •  3
  •   Hamelraj    7 年前

    试试这个

    $init = 150065;
    $day = floor($init / 86400);
    $hours = floor(($init -($day*86400)) / 3600);
    $minutes = floor(($init / 60) % 60);
    $seconds = $init % 60;
    
    echo "$day:$hours:$minutes:$seconds";
    
        3
  •  2
  •   noamt CoderYL    7 年前
    function dates($value) {
        $s = $ss%60;
        $m = floor(($value %3600)/60);
        $h = floor(($value %86400)/3600);
        $d = floor(($value %2592000)/86400);
        $M = floor($value /2592000);
    
        return "$M months, $d days, $h hours, $m minutes, $s seconds";
    }
    
        4
  •  1
  •   Manohar Khadka    7 年前

    $seconds = 90060;
    $dt = Carbon::now()->addSecond($seconds);
    $dt_old = Carbon::now();
    $days = $dt->diffInDays($dt_old);
    $dt = $dt->subDays($days);
    $hours = $dt->diffInHours($dt_old);
    $dt = $dt->subHours($hours);
    $minutes = $dt->diffInMinutes($dt_old);
    
    echo $days.'<br>';
    echo $hours.'<br>';
    echo $minutes.'<br>';
    
        5
  •  0
  •   Nikita    7 年前

    试试这个:

    $value = '90060';
    
            $inAMinute = 60;
            $inAnHour = 60 * $secondsInAMinute;
            $inADay = 24 * $secondsInAnHour;
    
            $days = floor($value / $inADay);
    
            $hourSeconds = $value % $inADay;
            $hours = floor($hourSeconds / $inAnHour);
    
            // Extract minutes
            $minuteSeconds = $hourSeconds % $inAnHour;
            $minutes = floor($minuteSeconds / $inAMinute);
    
    
            $timeValues = [];
            $sections = [
                'day' => (int)$days,
                'hour' => (int)$hours,
                'minute' => (int)$minutes,
    
            ];
    
            foreach ($sections as $name => $value){
                if ($value > 0){
                    $timeValues[] = $value. ' '.$name;
                }
            }
    
            $d= implode(' ', $timeValues);
            dd($d);