DateTime :: diff рассчитывает только на текущий день - PHP - PullRequest
1 голос
/ 27 января 2012

Я хочу рассчитать разницу в часах от двух дат.Это мой код:

$date_now = new DateTime(date("Y-m-d H:i:s"));
$date_db  = new DateTime("2010-01-24 01:01:25");

$difference = $date_now->diff($date_db);

echo $difference->h;

Проблема: возвращаемые часы соответствуют только одному и тому же дню ... Так что в этом примере, хотя я использую 2010 год, разница в часах никогда не превышает 24. Как я могу решить это?

Ответы [ 3 ]

3 голосов
/ 27 января 2012

Естественно, когда вы получаете часы, это только часы текущего дня. В противном случае эта информация была бы бесполезна в большинстве случаев. Подумайте, хотите ли вы отформатировать вывод как

Интервал составляет x месяцев, y дней и z часов.

Если переменная h в объекте DateInterval работает так, как вы предполагали, вы можете получить такой вывод, как

Интервал составляет 1 месяц, 35 дней и 2108 часов.

Итак, если вы хотите представить только в виде часов, вы должны суммировать часы дней и добавить их к часам текущего дня, согласно документации на класс DateInterval .

$difference->h + $difference->d * 24;
2 голосов
/ 27 января 2012

echo $difference->h + $difference->d * 24;

И также для любых интервалов далее по цепочке, если это необходимо ...

0 голосов
/ 27 января 2012
$diff = intval( ( time() - strtotime( '2010-01-24 01:01:25' ) ) / 3600 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...