2014-12-19 102 views
0

使用日期和時間函數計算時間。錯誤計算時間 - strtotime,date() - PHP

$starttime = '11:55'; 
$endtime = '13:01'; //or '1:01' 
$totaltime = date("i",strtotime($endtime) - strtotime($starttime)); 

我不知道爲什麼,但echo $totaltime06代替66

它的其他時間框架工作的罰款。即爲12:30, 13:30

感謝您的任何幫助。

回答

2

你的返回值被格式化爲一個新的時間輸出(由於date()函數)

由於您只請求格式化時間的分鐘數,所以只返回該部分。

如果你想用H鍵查看小時和分鐘,輸出:

$totaltime = date("H:i",strtotime($endtime) - strtotime($starttime)); 

這將返回 「01:06」。

如果你需要兩個日期之間的實際分鐘數(所以你需要66作爲結果),那麼你不會尋找格式化的時間字符串作爲結果,而是一個保持分鐘數的常規整數。這可以從你剛纔的計算計算,像這樣:

// divide total seconds between these points by 60, round down. 
$totalMinutes = floor ((strtotime($endtime) - strtotime($starttime))/60); 
+0

我只需要幾分鐘,像66應該是在這種情況下。 – Fahad 2014-12-19 11:22:49

+0

完成了。謝謝 – Fahad 2014-12-19 11:24:53

+0

然後乘以60小時,然後添加分鐘 – 2014-12-19 11:24:58

2

由於日期( 「I」)僅示出了從0分鐘至59

PHP date manual

一種可能的解決方案:

$totaltime = (strtotime($endtime) - strtotime($starttime))/60; 
0
<?php 

$starttime = '11:55'; 
$endtime = '13:01'; 
echo $totaltime (strtotime($endtime) - strtotime($starttime))/60; 
echo $totaltime = floor ((strtotime($endtime) - strtotime($starttime))/60); 

?> 

enter image description here

+0

當$ endtime =「01:01」它返回-654 – Fahad 2014-12-19 11:32:57

+0

echo $ totaltime = floor((strtotime($ endtime) - strtotime($ starttime))/ 60); – 2014-12-19 11:36:16

+0

是的,使用相同的...返回負值 – Fahad 2014-12-19 11:36:56