2015-03-30 2 views
-1

Я хочу, чтобы вычислить часы в посещаемости листа , но я не хочу, чтобы рассчитать часы и минуты, которые не между этими двумя временами, которые: с 08:00 до 14:00Как я могу рассчитать два раза между двумя фиксированными временами?

, например: сотрудник А прибыл на работу в 09:00 и выехал в 16:00 , результат должен быть 5 часов , и если сотрудник B прибыл на работу в 8:30 и оставил в 14:00 , результат должен быть 5 часов и 30 минут

С уважением

+0

Показать некоторое усилие. Некоторый код u уже написал – Xatenev

+1

'min (14:00, EmployeeAleaves) - max (08:00, EmployeeAarrives)' –

+0

echo $ onclock2 = '08: 00 '; echo $ clockout2 = '14: 05 '; // echo ','; // echo $ onclick = $ row ['tbl_clockout']; // echo $ clockout = $ row ['tbl_clockout']; echo '| Результат: '; $ onclock1 = strtotime ($ onclock2); $ clockout1 = strtotime ($ clockout2); echo $ diff = abs ($ onclock1 - $ clockout1)/3600; –

ответ

0

вот ваш ответ

<?php 
$restriction_start = strtotime("30-Mar-2015 08:00:00"); 
$restriction_end = strtotime("30-Mar-2015 14:00:00"); 

$start_time = strtotime("30-Mar-2015 09:00:00"); 
$end_time = strtotime("30-Mar-2015 16:00:00"); 


echo calculateTime($start_time, $end_time, $restriction_start, $restriction_end); 


function calculateTime($start_time, $end_time, $restriction_start, $restriction_end) 
{ 
    $start = $restriction_start; 
    if($start_time>$restriction_start) 
    { 
     $start = $start_time; 
    } 

    $end = $restriction_end; 
    if($end_time<$restriction_end) 
    { 
     $end = $end_time; 
    } 

    $time_diff = $end-$start; 

    $output = gmdate("H:i:s", $time_diff); 

    return $output; 
} 
?> 
+0

Спасибо вам большое: 3 это сработало –

0

Вы можете использовать объект Datetime для этого. Существует документация: http://php.net/manual/en/datetime.diff.php

<?php 
$datetime1 = new DateTime('2009-10-11'); 
$datetime2 = new DateTime('2009-10-13'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%R%a days'); 
?> 
0
var $NbrSec = mktime($hour1, $minute1, $second1, $month1, $day1, $year1) 
       - mktime($hour2, $minute2, $second2, $month2, $day2, $year2); 

var $Hr = ((int)($NbrSec/60)) * 60; 
var $Mn = $NbrSec % 60; 

echo $Hr . ":" . $Mn; 
+1

было бы более эффективным ответом, если вы предоставите описание своего кода –

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