2015-09-29 79 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