2017-02-07 5 views
-2

Мне нужно отсчет часов от строки php. Я много искал, но не нашел рабочих ответов и результатов!Счет часов от строки PHP

$time = "9.00am-1.00pm & 2.00pm-6.00pm"; 

Мне нужно извлечь $ Time & сосчитать все часы полностью. Если я напечатаю $ time, тогда выход должен быть: 8 часов

Заранее спасибо!

+2

Если вы уже пробовали много, вы должны показать эти попытки ... в противном случае люди не собираются, чтобы помочь вам в этом – Darren

+2

Как те времена попасть начать? Просто, чтобы быть уверенным, что у вас нет проблемы с XY здесь. – Nytrix

+0

Не может быть сделано? –

ответ

0

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

$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 
+0

Спасибо, мой вау! Это работает! –

+0

Добро пожаловать @Nayeem Tanvir – rescobar

0

Вы сэкономленное время в четыре столбца я думаю, как и что, если что тогда делать, как это

//for moring 
$my_str1 = strtotime("9.00am"); 
$my_str2 = strtotime("1.00pm"); 
$second = $my_str2-$my_str1; //get second 
$minutes = $second/60; //get minutes 
$morning = $minutes/60; //get hour 

сделать это же для вечерних

//for evening 
$my_str3 = strtotime("2.00pm"); 
$my_str4 = strtotime("6.00pm"); 
$second1 = $my_str4-$my_str3; //get second 
$minutes1 = $second1/60; //get minutes 
$evening = $minutes1/60; //get hour 

, то сумма утром и вечером

$hour = $morning-$evening; 
+0

Не кормите * рыбу * .. людям нужно что-то попробовать. – Nytrix

Смежные вопросы