У меня две переменные:
$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;
strftime
date
чтобы получить значение часов (H) $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