2015-09-29 114 views
1

我想要顯示當前時間與未來時間之間剩餘的時間(以小時爲單位):分鐘:秒(將日期轉換爲小時)。日期時間差+將日期轉換爲小時

# Current time. 
$current_datetime=new DateTime(); 
# Time in future. 
$future_time=new DateTime('2015-09-30 05:59:38'); 
# Get difference. 
$interval=$current_datetime->diff($future_time); 
# Format time (this does not convert days to hours). 
//$duration=$interval->format('%H:%I:%S'); 

後,我認爲我可以這樣做:

$duration=sprintf('%02d:%02d:%02d', $interval->days * 24 + $interval->H, $interval->i, $interval->s); 

但是,這不正常。它顯示00:27:27。分鐘和秒是正確的,但它顯示00小時。

+0

你能告訴你預期的輸出是什麼嗎? –

+0

您是否在第二種方法中嘗試了$ interval-> h而不是$ interval-> H?屬性名稱在PHP中區分大小寫。 – pamelus

+0

小時檢查($ interval-> days * 24)+($ interval-> H)。只是一個建議 –

回答

-1

獲取當前時間戳記和未來日期時間戳記,並取其差異。

一旦你有所作爲。您可以操作差異並將其轉換爲幾分鐘和幾秒鐘。

$diff = $future_timestamp - time(); 
$hours = $diff % 3600; 
$minutes = ($diff - ($hours*3600)) % 60; 
$seconds = $diff - (($hours*3600) + ($minutes*60)); 
+1

請注意,「數學」方法不鼓勵,因爲當存在夏令時或其他時間更改時,它不安全地計算差異。 – Maks3w