使用 PHP 的 2 个日期之间剩余的计数小时数


count hours remain between 2 dates with php

我有这个日期

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

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