Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中减去分钟数?_Php - Fatal编程技术网

如何在PHP中减去分钟数?

如何在PHP中减去分钟数?,php,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 我只对分钟感兴趣,对小时不感兴趣

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

我只对分钟感兴趣,对小时不感兴趣编辑:根据评论,我对您的要求有了更好的理解,并编写了此函数

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

我打赌有更干净的方法,但这似乎符合你的要求

$m1   = 20;
$m2   = 45;

$diff = $m1 - $m2;    
echo $diff >= 0 ? $diff : $diff + 60;
这将返回
35
。演示:

请注意,这个答案试图提供一个通用的解决方案。 如果你只需要减去几次,那就 与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);

20分钟-45分钟=35分钟是怎么回事?@MagnusEriksson前一个小时已经过去了35分钟。比如2:20-45分钟=1:35你的问题真的需要弄清楚。我们猜不出你的意思,也不想假设。只需减去,如果小于零,则加60直到大于零,否则如果大于60,则为mod 60。在发布答案之前,请阅读问题的评论。45减20不等于35,正如你所说的是25。然而,OP的问题太不清楚了。OP的注释代码:
//输出值应为35美元totalMinutes
@Fred ii-问题写得很糟糕。他的意思是10:20-45分钟,等于09:35@GregKos我完全同意。我在评论发布之前就发布了,现在我正在更新答案@弗雷德二世-我认为35是一个打字错误,因此“我想你的意思是25”。那么
“1:15”和
“3:05”
,区别是
70
分钟吗?@localheinz-考虑到OP只提到了分钟(当我写这个答案时),我只按分钟计算。在最初的问题中,OP根本没有提到任何时间。