我想知道如何在PHP中减去两个代表分钟的变量
例如我有两分钟变量
$minutes1 = 20;
$minutes2 = 45;
$totalMinutes = $minutes1 -$minutes2;
//output should be 35 as $totalMinutes
一个例子是
$time1 = "2:20";
$time2 = "3:45";
$finalTime = $time2 - $time1
//final time = 1:25
我只对分钟而不是小时感兴趣
答案 0 :(得分:1)
我敢打赌,有一些更清洁的方式,但这似乎做了你要求的。
$m1 = 20;
$m2 = 45;
$diff = $m1 - $m2;
echo $diff >= 0 ? $diff : $diff + 60;
返回35
。演示:https://3v4l.org/WaC8r
答案 1 :(得分:0)
编辑:根据评论,我对你的要求有了更好的理解并编写了这个功能。
function subtractMinutes($start, $sub) {
$res = $start;
while ($sub > 0) {
if ($sub >= 60) {
$sub -= 60;
continue;
}
if ($res >= $sub) {
$res -= $sub;
break;
}
if ($sub > $res) {
$sub -= $res + 1;
$res = 59;
continue;
}
$sub -= $res;
$res = 0;
}
return $res;
}
var_dump(subtractMinutes(20, 45)); //35
var_dump(subtractMinutes(20, 60)); //20
var_dump(subtractMinutes(20, 120)); //20
var_dump(subtractMinutes(20, 121)); //19
var_dump(subtractMinutes(40, 40)); //0
var_dump(subtractMinutes(59, 58)); //1
答案 2 :(得分:0)
请注意,此答案试图提供一般解决方案。 如果您只需要通过一切方式减去几次,只需要 检查60。
我会坚持建议你应该对所有操作使用小数,并且只在页面上输出结果时才变成正确的格式。我认为以这种方式进行计算更安全,而不是依赖于你每次都记得加/减60。
示例:
$single_minute = 1.66;
$twenty_minutes = 20*1.66 = 33.2;
$sixty_minutes = 60*1.66 = 99.6;
输出时:
$out_twenty = round(33.2/1.66);
$out_sixty = round(99.6/1.66);
您可以使用辅助常量:
define("MINUTE", 1.66);
//You want to calculate 34 minutes
$thirtyfour_minutes = MINUTE * 34;
//You want to output 34 minutes
echo round($thirtyfour_minutes);