将秒转换为天、小时、分钟和秒

将秒转换为天、小时、分钟和秒

我想转换一个变量$uptime这是秒,分为几天、几个小时、几分钟和几秒。

例子:

$uptime = 1640467;

结果应该是:

18 days 23 hours 41 minutes


牧羊人nacy
浏览 420回答 3
3回答

杨魅力

这可以通过DateTime班级,等级用途:echo secondsToTime(1640467);# 18 days, 23 hours, 41 minutes and 7 seconds职能:function secondsToTime($seconds) {     $dtF = new \DateTime('@0');     $dtT = new \DateTime("@$seconds");     return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds');}演示

慕少森

基于JulianMoreno的回答,但更改为将响应作为字符串(而不是数组),只包括所需的时间间隔,而不假定为复数。这与最高投票的答案之间的区别是:为259264几秒钟这段代码会给3天1分4秒为259264秒,最高得票率(Glavić)会给三天,0小时,1分钟S和4秒function secondsToTime($inputSeconds) {     $secondsInAMinute = 60;     $secondsInAnHour = 60 * $secondsInAMinute;     $secondsInADay = 24 * $secondsInAnHour;     // Extract days     $days = floor($inputSeconds / $secondsInADay);     // Extract hours     $hourSeconds = $inputSeconds % $secondsInADay;     $hours = floor($hourSeconds / $secondsInAnHour);     // Extract minutes     $minuteSeconds = $hourSeconds % $secondsInAnHour;     $minutes = floor($minuteSeconds / $secondsInAMinute);     // Extract the remaining seconds     $remainingSeconds = $minuteSeconds % $secondsInAMinute;     $seconds = ceil($remainingSeconds);     // Format and return     $timeParts = [];     $sections = [         'day' => (int)$days,         'hour' => (int)$hours,         'minute' => (int)$minutes,         'second' => (int)$seconds,     ];     foreach ($sections as $name => $value){         if ($value > 0){             $timeParts[] = $value. ' '.$name.($value == 1 ? '' : 's');         }     }     return implode(', ', $timeParts);}希望这能帮上忙。
打开App,查看更多内容
随时随地看视频慕课网APP