我有这个日期
$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 之间还剩多少小时
看看DateTime类,它们比strtotime()和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
我认为这对你有用。
$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;
由于$dt_unico
是从$dt_occ
派生的,这是一个时间戳,time()
给出了当前时间,也作为时间戳,从后者中减去前者将给出它们之间的间隔,以秒为单位。
现在,一小时是60*60=3600
秒,所以:
$interval=(time()-$dt_occ)/3600;
不过,有些注意事项:
我以为
$dt_occ
指的是过去。将来的日期将给出负结果,因此如果是这种情况,请切换减法操作数。以上将给出浮点结果。对于积分结果,请根据所需的舍入方法使用适当的舍入函数。