Php 如何计算包括当天在内的小时差异

Php 如何计算包括当天在内的小时差异,php,mysql,datetime,Php,Mysql,Datetime,列date是datetime格式。 我需要显示在某个日期之前的小时数 $st = $db->query("select ev, date from event where ev = 'ng'"); $row = $st->fetch(); $d1 = new DateTime($row['date']); $d2 = new DateTime(); $diff = $d1->diff($d2); $diff = $diff->days * 24; // result: 2

date
datetime
格式。
我需要显示在某个日期之前的小时数

$st = $db->query("select ev, date from event where ev = 'ng'");
$row = $st->fetch();
$d1 = new DateTime($row['date']);
$d2 = new DateTime();
$diff = $d1->diff($d2);
$diff = $diff->days * 24; // result: 2088
所以这是可行的,但不计算当天的小时数。我试过:

$diff = $diff->hours;
并收到通知:

Undefined property: DateInterval::$hours

有什么帮助吗?

一旦你有了diff对象,只需格式化它就可以得到小时数

$d1 = new DateTime($row['date']);
$d2 = new DateTime();
$diff = $d1->diff($d2);
获取小时数

echo ($diff->d * 24) + $diff->h

因为
$diff->days
返回剩余的天数,您可以将其乘以24来获得小时数,然后您只需将当天剩余的小时数相加,基本上就是您在做什么,但只需将剩余的小时数相加到总小时数即可

$st = $db->query("select ev, date from event where ev = 'ng'");
$row = $st->fetch();
$d1 = new DateTime($row['date']);
$d2 = new DateTime();
$diff = $d1->diff($d2);
// (days * 24) = hours + remaining hours
$hours = ($diff->days * 24) + $diff->h;

示例:1天5小时=29

hours
不是
DateInterval
类的有效属性。检查属性名称是否正确。@bonaca我很累,谢谢,但是如何只获取小时,而不获取天加小时?@bonaca我已经修改了我的答案