Рассчитать общее количество часов от 2 временных марок

У меня две переменные:

$start_time = '9:36'; $end_time = '12:47'; 

Как бы я вычислил количество часов между двумя моментами и сохранил их в переменной следующим образом:

 $total_hours = 3; 

Я прочитал, что вам нужно сначала преобразовать время. Также не будет необходимости в дате, поскольку все это будет в тот же день.

Любая помощь будет оценена

Это решает вашу проблему:

 $start = explode(':', $start_time); $end = explode(':', $end_time); $total_hours = $end[0] - $start[0] - ($end[1] < $start[1]); 

См. Этот код для доказательства.

Это решение предполагает, что оба часа с одного дня.

если вам нужно только вычислить разницу в часах, вы могли бы использовать класс datetime especifically функцию date_parse_from_format, где вам просто нужно предоставить формат в качестве семени, а затем то, что вам нужно проанализировать, дать вычислить разницу

Редактировать 1

вы можете сделать что-то с меньшими накладными расходами:

 $start_time = '9:36'; $end_time = '12:47'; $today = date('Yd-m'); $start = strtotime($today . ' ' . $start_time); $end = strtotime($today . ' ' . $end_time); $diff = floor(($end - $start) / 3600); // or if you don't need the exact hours $diff = ($end - $start) / 3600; 
  1. Преобразовать временную строку tor timestamp: strftime
  2. Возьмите разницу, и
  3. а. Используйте date чтобы получить значение часов (H)
    б. Разделите с 3600 и округлите столько цифр, сколько вам нужно.

$total_hours = (int)date('G', abs(strtotime($time2)-strtotime($time1)));

Смотри ниже

 $start_time = '9:36'; $end_time = '12:47'; $v = strtotime($end_time) - strtotime($start_time); echo date("h:i", $v); 

Выходы

  03:11 

http://php.net/manual/en/function.strtotime.php и http://php.net/manual/en/function.date.php