将分钟数转换为小时&;使用PHP的分钟数

将分钟数转换为小时&;使用PHP的分钟数,php,time,Php,Time,我有一个名为$final\u time\u saving的变量,它只是一个分钟数,例如250分钟 如何使用以下格式的PHP将分钟数转换为小时和分钟: 4小时10分钟@Martin Bean的答案完全正确,但在我看来,它需要进行一些重构,以满足普通用户对网站(web系统)的期望。 $hours = floor($final_time_saving / 60); $minutes = $final_time_saving % 60; 我认为当分钟数低于10时,必须加一个前导零。 例:10:01,不

我有一个名为
$final\u time\u saving
的变量,它只是一个分钟数,例如250分钟

如何使用以下格式的PHP将分钟数转换为小时和分钟:


4小时10分钟

@Martin Bean的答案完全正确,但在我看来,它需要进行一些重构,以满足普通用户对网站(web系统)的期望。
$hours = floor($final_time_saving / 60);
$minutes = $final_time_saving % 60;
我认为当分钟数低于10时,必须加一个前导零。
例:10:01,不是10:1

我将代码更改为接受
$time=0
,因为0:00比24:00好

还有一件事,
$time
大于1439是不存在的,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);
}
函数convertToHoursMins($time,$format='%d:%s')){
settype($time,'integer');
如果($time<0 | |$time>=1440){
返回;
}
$hours=楼层($time/60);
$minutes=$time%60;
如果($分钟<10){
$minutes='0'。$minutes;
}
返回sprintf($format,$hours,$minutes);
}

很抱歉提出了一个老话题,但我经常使用其中一个答案中的一些代码,今天我告诉自己,我可以做到这一点,而不必窃取别人的代码。我很惊讶这是多么容易。我想要的是返回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";
}
函数tm($nm,$lZ=true){//tm=军事(时间),lZ=前导零(如果为true,则返回510作为08:30,如果为false,则返回8:30
$mins=$nm%60;
如果($mins==0)$mins=“0$mins”;//添加一个零,那么它不会返回08:0,而是返回08:00
$hour=地板($nm/60);
如果($lZ){
如果($hour<10)返回“0$hour:$mins”;
}
返回“$hour:$mins”;
}
我使用短变量名是因为我会经常使用这个函数,而且我很懒。

您可以通过扩展来实现这一点,扩展也可以工作超过一天的分钟数(
=1440
):

echo date('H:i', mktime(0,257));
$minutes=250;
$zero=新的日期时间('@0');
$offset=新日期时间('@'.$minutes*60);
$diff=$zero->diff($offset);
echo$diff->格式(“%a天,%h小时,%i分钟”);

功能小时分钟($分钟){//总计
如果($分钟)
4小时10分钟

最简单的方法是:

    gmdate('H:i', $numberOfSeconds * 60)

以防万一,您可能想:

echo date('G \h\o\u\r\s i \m\i\n\u\t\e\s', mktime(0, 90)); //will return 1 hours 30 minutes
echo date('G \j\a\m i \m\e\n\i\t', mktime(0, 90)); //will return 1 jam 30 menit

多亏了@Martin_Bean和@Mihail Velikov answers。我只取了他们的答案片段并添加了一些修改以进行检查

  • 如果仅小时可用且分钟值为空,则它将仅显示小时

  • 如果仅分钟可用且小时值为空,则它将仅显示分钟

  • 如果分钟数=60,则显示为1小时。如果分钟数=1,则输出为1分钟

  • 欢迎修改和编辑。 谢谢。这是密码

    函数转换为小时分钟($time){

    $hours=楼层($time/60);
    $minutes=($time%60);
    如果($minutes==0){
    如果($hours==1){
    $output_格式=“%02d小时”;
    }否则{
    $output_格式=“%02d小时”;
    }
    $hoursToMinutes=sprintf($output\u格式,$hours);
    }否则,如果($hours==0){
    如果($分钟<10){
    $minutes='0'。$minutes;
    }
    如果($minutes==1){
    $output_格式=“%02d分钟”;
    }否则{
    $output_格式=“%02d分钟”;
    }
    $hoursToMinutes=sprintf($output\u格式,$minutes);
    }否则{
    如果($hours==1){
    $output_format='%02d小时%02d分钟';
    }否则{
    $output_格式=“%02d小时%02d分钟”;
    }
    $hoursToMinutes=sprintf($output_格式,$hours,$minutes);
    }
    返回$hoursToMinutes;
    }`
    
    检查此链接以获得更好的解决方案



    这个数字是分钟数吗?250min!=4h 17minNo,但是在小时内搜索250分钟返回4.16666667小时,所以也许这就是Rob得到这个数字的原因?可能是好的方面的重复,我同意分钟数需要一个前导零。另一种方法是使用sprintf的填充功能:
    echo sprintf('%02d',2);//这与“02”
    相同,我添加了几个小时,在添加到数据库时特别重要,这样mysql不会混淆返回值不一致,可能返回void,可能返回string代码有趣后的注释..从问题中复制…250分钟是4小时(240分钟)和10分钟,而不是17分钟:)确实如此。我不知道为什么要写这个!留给后人:)如果这只在小时=0时返回分钟就好了。@Timperson这很容易实现。@MartinBean谢谢我意识到了这一点。我说的是在这个示例中添加代码。最佳解决方案!还有,对于秒=>date('H\hi\m:s\s',mktime(0,0,$totalSeconds))错误的解决方案。不适用于时间>24小时,并且取决于时区配置。这不是您正在使用的日期,不要使用
    date
    函数。这是问题的解决方案,但您是正确的,@deceze,对于超过24小时的时段,它不准确。不过,我不知道这与时区有何关系。相反,
    gmmktime
    将返回一个本地偏移时间。当您只需要转换一些整数并且停留在24小时边界内时,这是一个完美的解决方案!这是一个误导性的解决方案,至少应该注意,这在>24小时内不起作用。这实际上是最好的解决方案。不涉及任何日期函数。如果您有像e
    12.99
    >>gmdate('H:i',9999*60)=>“22:39”>>gmdate('H:i',9999*60)=>“10:39”好主意,我接受了这个概念并构建了
    $t = 250;
    $h = floor($t/60) ? floor($t/60) .' hours' : '';
    $m = $t%60 ? $t%60 .' minutes' : '';
    echo $h && $m ? $h.' and '.$m : $h.$m;
    
        gmdate('H:i', $numberOfSeconds * 60)
    
    echo date('G \h\o\u\r\s i \m\i\n\u\t\e\s', mktime(0, 90)); //will return 1 hours 30 minutes
    echo date('G \j\a\m i \m\e\n\i\t', mktime(0, 90)); //will return 1 jam 30 menit
    
    $m = 250;
    
    $extraIntH = intval($m/60);
    
    $extraIntHs = ($m/60);             // float value   
    
    $whole = floor($extraIntHs);      //  return int value 1
    
    $fraction = $extraIntHs - $whole; // Total - int = . decimal value
    
    $extraIntHss =  ($fraction*60); 
    
    $TotalHoursAndMinutesString  =  $extraIntH."h ".$extraIntHss."m";
    
                $hours    = floor($time / 60);
                $minutes  = ($time % 60);
    
    
                if($minutes == 0){
    
                    if($hours == 1){
    
                        $output_format = '%02d hour ';
    
                    }else{
    
                        $output_format = '%02d hours ';
                    }
    
    
                    $hoursToMinutes = sprintf($output_format, $hours);
    
                }else if($hours == 0){
    
                    if ($minutes < 10) {
                            $minutes = '0' . $minutes;
                    }
    
                    if($minutes == 1){
    
                        $output_format  = ' %02d minute ';
    
                    }else{
    
                        $output_format  = ' %02d minutes ';
                    }
    
                    $hoursToMinutes = sprintf($output_format,  $minutes);
    
                }else {
    
                    if($hours == 1){
    
                        $output_format = '%02d hour %02d minutes';
    
                    }else{
    
                        $output_format = '%02d hours %02d minutes';
                    }
    
                    $hoursToMinutes = sprintf($output_format, $hours, $minutes);
                }
    
                return $hoursToMinutes;
            }`
    
    $minutes=$item['time_diff'];
    $hours =   sprintf('%02d',intdiv($minutes, 60)) .':'. ( sprintf('%02d',$minutes % 60));