Как найти разницу в часах между двумя датами в PHP?

У меня есть две даты, оформленные как "Y-m-d H: i: s". Мне нужно сравнить эти две даты и выяснить разницу в часах.

 mike21 сент. 2010 г., 21:05
Да, я делил на 24 вместо 3600. Дох!
 Fanis21 сент. 2010 г., 20:56
Вы пробовали что-нибудь? Например, вы можете преобразовать их оба в метки времени Unix (секунды), используяstrtotime, затем вычтите это, затем разделите на 3600, чтобы получить часы

Ответы на вопрос(9)

$date1 = date_create('2016-12-12 09:00:00');

$date2 = date_create('2016-12-12 11:00:00');

$diff = date_diff($date1,$date2);

$hour = $diff->h;
Решение Вопроса

$hourdiff = round((strtotime($time1) - strtotime($time2))/3600, 1);

Деление на 3600, потому что в часе есть 3600 секунд и использованиеround() чтобы избежать много десятичных знаков.

 Paul T. Rawkeen28 нояб. 2014 г., 14:11
С помощьюstrtotime() являетсяне лучший способ ведение свиданий. Рассмотреть возможность использования\DateTime::createFromFormat($date, 'Y-m-d H:i:s')->diff($dto2) или аналогичный функционал для работы с датами (+ мы знаем формат, который мы ожидаем разобрать). На улице почти 2015, давайте сделаем все элегантно!
 mike21 сент. 2010 г., 21:05
спасибо, это то, что я пытался, но я пытался разделить на 24.
 Asmodiel08 мар. 2017 г., 18:32
за исключением того, что createFromFormat принимает $ format в качестве первого параметра;)\DateTime::createFromFormat('Y-m-d H:i:s', $date)->diff( $dto2 )

В дополнение к принятому ответу хочу напомнить, что\DateTime::diff доступен!

$f = 'Y-m-d H:i:s';
$d1 = \DateTime::createFromFormat($date1, $f);
$d2 = \DateTime::createFromFormat($date2, $f);

/**
 * @var \DateInterval $diff
 */
$diff = $d2->diff($d1);
$hours = $diff->h + ($diff->days * 24); // + ($diff->m > 30 ? 1 : 0) to be more precise

\DateInterval документация.

Вы также можете использовать интерфейс DateTime -

$d1= new DateTime("06-08-2015 01:33:26pm"); 
$d2= new DateTime("06-07-2015 10:33:26am");
$interval= $d1->diff($d2);
echo ($interval->days * 24) + $interval->h;

4 года начался в 2:00 утра в воскресенье, 9 марта.

Вы теряете один час в течение периода с $ date1 = "2014-03-07 05:49:23" до $ date2 = "2014-03-14 05:49:23";

strtotime() проанализировать ваши строки и сделать разницу между ними двумя.

Ресурсы :

php.net - strtotime ()
 Scott Tesler16 апр. 2013 г., 02:30
Покажите некоторый код.

Вы можете попробовать это:

$dayinpass = "2016-09-23 20:09:12";
$today = time();
$dayinpass= strtotime($dayinpass);
echo round(abs($today-$dayinpass)/60/60);
$seconds = strtotime($date2) - strtotime($date1);
$hours = $seconds / 60 / 60;

что при использовании этих значений результат будет 167, и он должен быть 168:

$date1 = "2014-03-07 05:49:23";
$date2 = "2014-03-14 05:49:23";
$seconds = strtotime($date2) - strtotime($date1);
$hours = $seconds / 60 /  60;

Ваш ответ на вопрос