如何在 Laravel 中将秒转换为天小时分钟
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/46210668/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 16:39:08 来源:igfitidea点击:
How to convert seconds into days hours minutes in Laravel
提问by noufalcep
I want to convert time interval in seconds into days hours minutes. I have tried this.
我想以秒为单位的时间间隔转换为天小时分钟。我试过这个。
$value = '90060';
CarbonInterval::seconds($value)->forHumans();
I got the output
我得到了输出
90060 seconds
My expected output is
我的预期输出是
1 day 1 hour 1 minute
How can I get the output using Carbon
or CarbonInterval
如何使用Carbon
或获取输出CarbonInterval
回答by noufalcep
I got a solution.
我得到了解决方案。
$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();
Updated Solution
更新的解决方案
CarbonInterval::seconds(90060)->cascade()->forHumans();
回答by RamAnji
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";
}
回答by Nikita
Try this:
尝试这个:
$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);
回答by Manohar Khadka
Try this, with carbon:
试试这个,用碳:
$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>';
回答by Hamelraj
try this
尝试这个
$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";