如何在PHP中减去分钟数?

时间:2017-08-10 17:08:18

标签: php

我想知道如何在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

我只对分钟而不是小时感兴趣

3 个答案:

答案 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);