1

我有这个日期

$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 还有多少小时

4

3 回答 3

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
于 2013-11-11T22:03:12.827 回答
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;
于 2013-11-11T21:17:59.627 回答
0

由于$dt_unico派生自$dt_occ,这是一个时间戳并time()给出当前时间,也作为时间戳,从后者中减去前者将给出它们之间的间隔,以秒为单位。

现在,一小时是60*60=3600秒,所以:

$interval=(time()-$dt_occ)/3600;

不过,一些注意事项:

  • 我假设$dt_occ那是指过去。未来的日期会给出否定的结果,所以如果是这种情况,请切换减法操作数。

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

于 2013-11-11T22:31:32.380 回答