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