我想显示当前时间与未来时间之间剩余的时间(以小时为单位):分钟:秒(将天数转换为小时数)。
# 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 :(得分: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));