Вы используете floor
, поэтому вы получаете только 1 час для этих входов. Эти входные данные приводят к 1,7 часам, если вы держите ответ в виде числа с плавающей точкой. floor
автоматически округляется до нижнего целого значения. Проверьте http://php.net/manual/en/function.floor.php для получения дополнительной информации.
$t1 = strtotime('09:19:00');
$t2 = strtotime('11:01:00');
$hours = ($t2 - $t1)/3600; //$hours = 1.7
Если вам нужна более мелкая разница во времени, вы можете ее уточнить ...
echo floor($hours) . ':' . ( ($hours-floor($hours)) * 60 ); // Outputs "1:42"
UPDATE:
Я только что заметил ваши комментарии к ответу Длинных Ушей. Пожалуйста, проверьте мои комментарии выше, они верны. Ввод значений «09: 11: 00» и «09: 33: 00» приводит к 0 часам (22 минутам).
Если вы введете эти значения и получите 4 часа, у вас, вероятно, будет десятичная ошибка в вашей математике. Используя '09: 11 'к '09: 33', результат составляет .367 часов. Если вы разделите результаты strtotime
на 360 вместо 3600, вы получите результат 3,67 часа (или 4 часа, в зависимости от метода округления).
strtotime
преобразует ваше время в int
значение , представляющее количество секунд с начала эпохи Unix. Поскольку вы преобразуете оба значения в секунды, а затем вычитаете значения друг из друга, полученное значение составляет количество секунд. В 1 часе 3600 секунд.