日期时间差异+将天数转换为小时数

时间:2015-09-29 18:32:45

标签: php

我想显示当前时间与未来时间之间剩余的时间(以小时为单位):分钟:秒(将天数转换为小时数)。

# 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小时。

3 个答案:

答案 0 :(得分:4)

见这里:http://php.net/manual/en/class.dateinterval.php

PHP的DateInterval类小时组件名为h而不是H(请记住PHP区分大小写)。

答案 1 :(得分:0)

$start_date = new DateTime('older date');
$end_date = new DateTime('newer date');
$interval = $start_date->diff($end_date);//find the date difference
$diff = $interval->format('%h')+($interval->format('%d')*24)+($interval->format('%m')*28*24)+($interval->format('%y')*365*28*24);

///仅将差异转换为小时 将天数乘以24,将月数乘以28和24,将年数乘以365和28和24,将所有的相加在一起得出最接近的小时差。

答案 2 :(得分:-1)

获取当前时间戳和未来日期时间戳,并将其区别开来。

一旦你有所作为。你可以操纵差异并将其转换为小时分和秒。

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