Как я могу определить продолжительность date_diff?

У меня есть следующий код:

$sStart = date('Y-m-d H:i:s', strtotime($row['sStart']));
$sEnd   = date('Y-m-d H:i:s', strtotime($row['sEnd']));

$sStartDate = new DateTime($sStart);
$sEndDate   = new DateTime($sEnd);

$diff = date_diff($sStartDate, $sEndDate, true);

$dur = $diff->format('%h:%i');

$row['sStart'] а также $row['sEnd'] являются datetimes из базы данных MySQL.

Как я могу сказать, если $diff более 24 часов?

2

Решение

$diff имеет тип DateInterval.

Я думаю, что это даст вам количество часов, используя результат date_diff:

$hours = ($diff->days * 24) + $diff->h;

if ($hours > 24) {
// etc ..
}
3

Другие решения

Так как 24 часа это 1 день, вы можете использовать %a модификатор к DateInterval::format вызов, чтобы вычислить количество дней, которые пересекает интервал:

$sStartDate = DateTime::createFromFormat('Y-m-d H:i:s', '2013-05-13 21:56:00');
$sEndDate   = DateTime::createFromFormat('Y-m-d H:i:s', '2013-05-14 21:56:01');

$diff = date_diff($sStartDate, $sEndDate, true);

$days = $diff->format('%a');
if (1 <= $days) {
echo '24 hours or more.';
} else {
echo 'less than 24 hours.';
}

Посмотри вживую.

1

По вопросам рекламы [email protected]