Конечно, значения времени не должны храниться в базе данных в виде полной строки, но попробуйте это, грязный раствор:
$date = "9.00am-1.00pm & 2.00pm-6.00pm";
$result = explode("&", $date);
$range1 = explode("-", $result[0]);
$time1 = new DateTime(date('H:i:s',strtotime($range1[0])));
$time2 = new DateTime(date('H:i:s',strtotime($range1[1])));
$diff1 = $time1->diff($time2);
$range2 = explode("-", $result[1]);
$time3 = new DateTime(date('H:i:s',strtotime($range2[0])));
$time4 = new DateTime(date('H:i:s',strtotime($range2[1])));
$diff2 = $time3->diff($time4);
$total_hours = ($diff1->h + $diff2->h);
echo $total_hours;
Выход:
8
Теперь, как вы можете видеть вас есть разница в качестве объекта:
var_dump($diff1);
var_dump($diff2);
Выход:
object(DateInterval)[3]
public 'y' => int 0
public 'm' => int 0
public 'd' => int 0
public 'h' => int 4
public 'i' => int 0
public 's' => int 0
public 'weekday' => int 0
public 'weekday_behavior' => int 0
public 'first_last_day_of' => int 0
public 'invert' => int 0
public 'days' => int 0
public 'special_type' => int 0
public 'special_amount' => int 0
public 'have_weekday_relative' => int 0
public 'have_special_relative' => int 0
object(DateInterval)[6]
public 'y' => int 0
public 'm' => int 0
public 'd' => int 0
public 'h' => int 4
public 'i' => int 0
public 's' => int 0
public 'weekday' => int 0
public 'weekday_behavior' => int 0
public 'first_last_day_of' => int 0
public 'invert' => int 0
public 'days' => int 0
public 'special_type' => int 0
public 'special_amount' => int 0
public 'have_weekday_relative' => int 0
public 'have_special_relative' => int 0
И у вас есть доступ к значениям (часы, минуты, секунды) в данном случае несколько часов, например, с помощью:
public 'h' => int 4
$diff1->h
Если вы уже пробовали много, вы должны показать эти попытки ... в противном случае люди не собираются, чтобы помочь вам в этом – Darren
Как те времена попасть начать? Просто, чтобы быть уверенным, что у вас нет проблемы с XY здесь. – Nytrix
Не может быть сделано? –