我有一个名为变量的变量$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分钟