2014-05-22 160 views
0

我正在嘗試創建一個時間表頁面,員工可以在其中輸入時鐘。在計時結束後,他們的總小時數被計算出來,因此,計算時間2(時鐘輸出)減去時間1(時鐘輸入)。我在這裏使用了一段時間,因爲我只想知道如何做差異本身,然後我可以弄清楚如何做其餘的事情(除了總數以外,其他所有工作都可以)。我提供了我的代碼和結果。如果您可以在幾個小時內解決問題,如果您發佈代碼和結果,我將不勝感激。有人建議我在第54行使用abs(),但它仍然不起作用。感謝您的時間。如何計算兩個時間戳的小時之差?

$time1 = strtotime('09:10:04'); 
$time2 = strtotime('12:16:06'); 
$diff = $time2 - $time1; 
echo "Start Time: ".date('h:i:s', $time1)."<br>"; 
echo "End Time: ".date('h:i:s', $time2)."<br>"; 
echo "Total hours: " . date('h:i:s', $diff); 

開始時間:9點10分04秒

結束時間:12時16分06秒

總時間:10時06分02秒

回答

0

我想,你的問題在發生,因爲你住在時區+7。 當您通過strtotime()提取時間時,系統將兩次都轉爲UTC。當你減去t2-t1時,任何時區移位都會變爲零。

但是,當您打印結果時,date()會將偏移量添加到當地時區 並打印+7小時。

爲了保持這種增加,只是在節目一開始寫一次:

date_default_timezone_set('UTC'); 
+0

是的,我確實是在 「(UTC-05:00)東部時間(美國和加拿大)」。這是我在編碼時忽略的內容。這條線解決了我的問題,使我在處理時間戳時更加了解時區。謝謝。 – user3666355

+0

好吧,我沒有猜測你的時區自AM/PM週期時間問題。 +7 +(-5)是12。 – maxihatop

0

我喜歡DateTime這個

$time1 = new DateTime('09:10:04'); 
$time2 = new DateTime('12:16:06'); 
$diff = $time1->diff($time2); 
echo $diff->format('%h hours'); 
相關問題