用PHP计算2个日期之间的小时数

时间:2013-11-11 21:14:35

标签: 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_unico之间还剩多少小时

3 个答案:

答案 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指的是过去。未来日期将给出否定结果,因此如果是这种情况,请切换减法操作数。

  • 以上将给出一个浮点结果。对于积分结果,请根据所需的舍入方法使用适当的舍入函数。