我有一个名为变量的变量$final_time_saving,例如250分钟.
如何使用此格式的PHP将分钟数转换为小时和分钟:
4 hours 10 minutes
Mar*_*ean 116
<?php
function convertToHoursMins($time, $format = '%02d:%02d') {
    if ($time < 1) {
        return;
    }
    $hours = floor($time / 60);
    $minutes = ($time % 60);
    return sprintf($format, $hours, $minutes);
}
echo convertToHoursMins(250, '%02d hours %02d minutes'); // should output 4 hours 17 minutes
Run Code Online (Sandbox Code Playgroud)
        Ala*_*air 97
echo date('H:i', mktime(0,257));
Run Code Online (Sandbox Code Playgroud)
        Sjo*_*erd 40
$hours = floor($final_time_saving / 60);
$minutes = $final_time_saving % 60;
Run Code Online (Sandbox Code Playgroud)
        Gla*_*vić 11
您可以使用DateTime扩展来实现此目的,这也适用于大于一天的分钟数(>= 1440):
$minutes = 250;
$zero    = new DateTime('@0');
$offset  = new DateTime('@' . $minutes * 60);
$diff    = $zero->diff($offset);
echo $diff->format('%a Days, %h Hours, %i Minutes');
Run Code Online (Sandbox Code Playgroud)
        @Martin Bean的答案是完全正确的,但在我看来,它需要一些重构来适应普通用户对网站(网络系统)的期望.
我认为当分钟数低于10时,必须添加前导零.
例如:10:01,而不是10:1  
我将代码更改为接受,$time = 0因为0:00优于24:00.  
还有一件事 - 没有$time大于1439的情况 - 这是23:59而下一个值就是0:00.
function convertToHoursMins($time, $format = '%d:%s') {
    settype($time, 'integer');
    if ($time < 0 || $time >= 1440) {
        return;
    }
    $hours = floor($time/60);
    $minutes = $time%60;
    if ($minutes < 10) {
        $minutes = '0' . $minutes;
    }
    return sprintf($format, $hours, $minutes);
}
Run Code Online (Sandbox Code Playgroud)
        小智 5
很抱歉提出了一个旧话题,但我经常使用其中一个答案中的一些代码,今天我告诉自己我可以在不窃取某人代码的情况下做到这一点。我很惊讶这是多么容易。我想要的是 510 分钟作为 08:30 返回,所以这就是代码的作用。
function tm($nm, $lZ = true){ //tm = to military (time), lZ = leading zero (if true it returns 510 as 08:30, if false 8:30
  $mins = $nm % 60;
  if($mins == 0)    $mins = "0$mins"; //adds a zero, so it doesn't return 08:0, but 08:00
  $hour = floor($nm / 60);
  if($lZ){
    if($hour < 10) return "0$hour:$mins";
  }
  return "$hour:$mins";
}
Run Code Online (Sandbox Code Playgroud)
我使用短变量名是因为我会经常使用这个函数,而且我很懒。
$t = 250;
$h = floor($t/60) ? floor($t/60) .' hours' : '';
$m = $t%60 ? $t%60 .' minutes' : '';
echo $h && $m ? $h.' and '.$m : $h.$m;
Run Code Online (Sandbox Code Playgroud)
4小时10分钟