使用php计算两个日期之间的剩余小时数
我有这个约会使用php计算两个日期之间的剩余小时数,php,date,strtotime,Php,Date,Strtotime,我有这个约会 $dt_occ = mysql_result($info,0,"occ_data"); $dt_occ = strtotime($dt_occ); $dt_occ = strtotime('+1 day' , $dt_occ); $dt_unico = date('d/m/Y H:i',$dt_occ); $dt_il = date('d/m/Y',$dt_occ); $dt_alle = date('H:i',$dt_occ); 我需
$dt_occ = mysql_result($info,0,"occ_data");
$dt_occ = strtotime($dt_occ);
$dt_occ = strtotime('+1 day' , $dt_occ);
$dt_unico = date('d/m/Y H:i',$dt_occ);
$dt_il = date('d/m/Y',$dt_occ);
$dt_alle = date('H:i',$dt_occ);
我需要知道从现在到$dt_unico还剩多少小时,我想这对你来说是可行的
$dt1 = new DateTime($dt_occ);
$dt2 = new DateTime($dt_occ);
$dt2->modify("+1 day");
$interval = $dt2->diff($dt1);
echo $interval->hours;
如果您使用的是PHP5.5,您可以简单地执行以下操作:
$dt1 = new DateTimeImmutable($dt_occ);
$dt2 = $dt1->modify("+1 day");
$interval = $dt2->diff($dt1);
echo $interval->hours;
看看这些类,它们比strotime()和date()灵活得多。像这样的东西对你有用:-
function getDiffInHours(\DateTime $earlierDate, \DateTime $laterDate)
{
$utc = new \DateTimeZone('UTC');
//Avoid side effects
$first = clone $earlierDate;
$second = clone $laterDate;
//First convert to UTC to avoid missing hours due to DST etc
$first->setTimezone($utc);
$second->setTimezone($utc);
$diff = $first->diff($second);
return 24 * $diff->days + $diff->h;
}
如下图所示:-
$hours = getDiffInHours(new \DateTime($dt_occ), (new \DateTime($dt_occ))->modify('+ 1 day'));
var_dump($hours); //24
由于
$dt_unico
源自$dt_occ
,这是一个时间戳,time()
给出当前时间,也作为时间戳,因此从后者中减去前者将给出它们之间的间隔(以秒为单位)
现在,一小时是60*60=3600
秒,所以:
$interval=(time()-$dt_occ)/3600;
但也有一些注意事项:
- 我假设
指的是过去。未来的日期将给出负结果,因此如果是这种情况,请切换减法操作数$dt_occ
- 上面将给出一个浮点结果。对于积分结果,根据所需的舍入方法,使用适当的舍入函数
hours
属性。如果两次之间有DST更改,则会在+/-1小时内给出错误的结果。@vascowhite否不会time()
将转换为正确的时间戳,而$dt_occ
已经是时间戳。