2017-08-10 84 views
-1

我想知道如何減去兩個變量在PHP如何在PHP中減去分鐘數?

例如代表分鐘,我有2分鐘變量

$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 

我只關心在分鐘而不是小時

+5

如何 - 20分鐘後45分鐘= 35分鐘呢? –

+2

@MagnusEriksson前一小時35分鐘。像2:20 - 45分鐘= 1:35 –

+0

https://stackoverflow.com/questions/12969413/how-to-subtract-two-numeric-strings –

回答

1

我敢打賭,有一些更清潔的方式,但這似乎是做你所要求的。

$m1 = 20; 
$m2 = 45; 

$diff = $m1 - $m2;  
echo $diff >= 0 ? $diff : $diff + 60; 

這將返回35。演示:https://3v4l.org/WaC8r

+0

那麼''1:15「'和''3:05」'是什麼,差別是70分鐘? – localheinz

+0

@localheinz - 考慮到OP只提到了幾分鐘(當我寫這個答案時),我只能按分鐘。在原來的問題中,OP沒有提到任何時間。 –

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 
+0

請在發佈答案之前閱讀有關問題的評論。 – GregKos

+0

45減20不等於35,就像你說的那樣是25。但是,OP的問題還不太清楚。 OP的評論代碼:''//輸出應該是35美元$ totalMinutes' –

+0

@ Fred-ii-問題寫得不好。他的意思是,例如10:20 - 45分鐘,相當於09:35 – GregKos

0

請注意,此答案試圖提供一個通用的解決方案。 如果你只需要通過各種手段減去了幾次,只是 檢查與60

我就堅持建議你應該使用小數的所有操作,只有當輸出轉成正確的格式在頁面上的結果。我相信以這種方式進行計算是比較安全的,而不是依靠記住每次增加/減少60。

例子:

$single_minute = 1.66; 
$twenty_minutes = 20*1.66 = 33.2; 
$sixty_minutes = 60*1.66 = 99.6; 

當outputing:

$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);