2017-07-25 59 views
0

我想設置一個計時器並計算完成任務需要多長時間。以分鐘爲單位計算時間差(PHP)

所以我下面的PHP代碼設置只是爲了測試:

$firstDate = date('Y-m-d h:m:s'); 
sleep(80); 
$secondDate = date('Y-m-d h:m:s'); 
$diffDates = (strtotime($secondDate) - strtotime($firstDate)); 

echo "Difference in dates is:" . $diffDates . "\n"; 

當我運行它,雖然它給了我下面的輸出:

Difference in dates is:-40 

我想知道是,爲什麼它會給我-40,我如何設置它,以便我可以簡單計算結束日期 - 以分鐘爲單位的開始日期。

非常感謝您的幫助。

+0

我只是睡眠測試你的代碼(5),我有5個作爲結果。你只有這個代碼? –

+1

您正在使用'date'來創建時間字符串,然後使用'strtotime()'將其轉換回整數。你可以省去一些麻煩:'$ firstDate = time(); sleep(80); $ secondDate = time(); $ diff = $ secondDate- $ firstDate;' –

+1

雖然沒有解釋-40的結果,奇怪我得到了20,當它應該是80. – WheatBeak

回答

0

問題是你給錯誤的日期格式的時間。這應該是h:i:sh:m:s

所以你的日期將是:date('Y-m-d h:i:s')

$firstDate = date('Y-m-d h:i:s'); 
sleep(80); 
$secondDate = date('Y-m-d h:i:s'); 
$diffDates = (strtotime($secondDate) - strtotime($firstDate)); 

echo "Difference in dates is:" . $diffDates . "\n"; 

然後輸出將是:​​

0

的問題是,你有你的時間格式字符串錯誤:

$firstDate = date('Y-m-d h:m:s');

第二m,這應該是i爲「分鐘」,實際上是「月」了,所以這是07

這將解決這個問題:

date('Y-m-d h:i:s')

值得一提的是,如果你使用這種格式,你應該在末尾加上a來指定ampm,或者使用H代替h 24小時格式。

這可能會導致問題。比如我在哪裏,現在是下午3點17分,所以,當我這樣做:

echo time(); 
echo "<br>"; 
echo strtotime(date('Y-m-d h:i:s')); 

我的輸出是:

1501010231 
1500967031 

但使用date('Y-m-d h:i:s a')date('Y-m-d H:i:s')會給雙方的預期結果值是相同的。

0

$ firstDate =新\ DATETIME();

sleep(80);

$ secondDate = new \ DateTime();

$ interval = $ firstDate-> diff($ secondDate);

回聲「日期差異是:」。 $ interval-> s。「\ n」 個;

結果:差異日期爲:80

相關問題