2013-10-04 2 views
1

Есть функция, чтобы подсчитать общее количество минут в часах между несколькими датами?Счет часов и минут между несколькими датами

У меня есть несколько раз, как это:

10:00 18:00 | 15:00 23:00 | 00:00 00:00 | 08:30 16:30 | 00:00 00:00 | 16:00 19:00 | 00:00 00:00

Как вы можете видеть, некоторые могут быть пустыми, теперь мне нужно знать общее количество часов и минут, которые я проработал на этой неделе. Кто-нибудь знает решение?

Спасибо!

+0

Разделить и победить. Рассчитайте общее количество часов каждого дня/временного интервала, затем суммируйте их. Не пытайтесь усложнять проблемы, чем они есть :) – tomahaug

+0

См. Http://www.php.net/manual/fr/datetime.diff.php и http://www.php.net/manual/fr/class .dateinterval.php –

+0

Если у вас есть этот ввод как строка, сначала взорваться («|», $ str); чтобы они были в вашей руке отдельно. –

ответ

1

Вот пример решения, включающий разбор входных данных в вопрос. Он не использует класс DateTime, но выполняет супер простой расчет для расчета общего количества часов.

$shifts = "10:00 18:00 | 15:00 23:00 | 00:00 00:00 | 08:30 16:30 | 00:00 00:00 | 16:00 19:00 | 00:00 00:00"; 
$shifts= explode('|', $shifts); 

$sum = 0;  

foreach($shifts as $shift) { 
    $times = explode(' ', trim($shift)); 
    $start = explode(':', $times[0]); 
    $end = explode(':', $times[1]); 

    $sum += ($end[0] - $start[0]) + ($end[1] - $start[1])/100/0.6; 
} 

echo $sum; // prints the result 27 

Я надеюсь, что это вам поможет.

+1

Спасибо, сейчас работает! –

0
// Create two new DateTime-objects... 
$date1 = new DateTime('2006-04-12T12:30:00'); 
$date2 = new DateTime('2006-04-14T11:30:00'); 

// The diff-methods returns a new DateInterval-object... 
$diff = $date2->diff($date1); 

// Call the format method on the DateInterval-object 
echo $diff->format('%d Day and %h hours'); 
+0

Я почти получил его, но теперь gmdate (перейти от общего количества секунд к часам: минуты) не будет превышать 24 часа. –

+0

Вот некоторая документация: http://nl1.php.net/manual/en /class.dateperiod.php – Matheno

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