2016-08-16 1 views
0

Я сравнивал время начала и окончания моей базы данных. Я, наконец, смог понять это, но теперь мне нужно добавить время вместе, чтобы получить все разности во времени. Каков наилучший/самый быстрый способ сделать это? Раньше я никогда не использовал DateTime. Я бы добавил что-то вроде $date->add($interval) в мой цикл while? Я не могу понять, как правильно его реализовать. Пример $starttime вар: 11:03:52 AM $startdate вар пример: 08-16-2016 $endtime вар Пример: 8:04:53 AM $enddate вар пример: 08-17-2016Использование DateTime для добавления многочисленных дат и времени вместе

$start = $startdate." ".$starttime; 
$end = $enddate." ".$endtime; 

$start_formatted = DateTime::createFromFormat('m-d-Y g:i:s A', $start); 
$started_on = $start_formatted->format("m-d-Y g:i:s A"); 

$end_formatted = DateTime::createFromFormat('m-d-Y g:i:s A', $end); 
$ended_on = $end_formatted->format("m-d-Y g:i:s A"); 

$interval=$start_formatted->diff($end_formatted); 

$intervalTypes = array("y", "m", "d", "h", "i", "s"); 
$intervalDescription = array("years", "months", "days", "hours", "minutes", "seconds"); 
$intervalLength = count($intervalTypes); 
$intervalCounter = 0; 



while ($intervalCounter < $intervalLength) { 

$currentInterval = $intervalTypes[$intervalCounter]; 

if ($interval->$currentInterval != 0) { 
    if ($interval->$currentInterval > 1) { 
      echo $interval->$currentInterval." ".$intervalDescription[$intervalCounter]." "; 
     } else { 
      echo $interval->$currentInterval." ".substr($intervalDescription[$intervalCounter], 0, -1)." "; 
      } 
} 

$intervalCounter++; 
} 

ответ

0

You должен создать установленную по умолчанию дату. И еще один, установленный в одно и то же время. Затем вы должны просто добавить свой интервал, найденный к одному из двух dateTime. В итоге вам просто нужно снова вызвать метод diff, чтобы теперь общая разница во времени между ними.

Пример:

$default = new DateTime("2000-01-01"); 
$total = new DateTime("2000-01-01"); 

Ваш код здесь, где вы рассчитать все ваши интервал

$total->add($interval); 

В конце

$totalInterval = $default->diff($total); 

Здесь вы получите DateInterval содержащий cumul всех интервалы

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