저는 직원들이 초과 근무 시간을 절약 할 수 있도록 간단한 시스템을 개발하고 있습니다. 따라서 월 말에 추가 직원 근무 시간을 지불하게됩니다.시간을 어떻게 구별합니까?
정상 시간은 1로 간주되지만 야간 시간 (23:00에서 07:00까지)은 각각 1,25 시간이어야합니다.
즉, 우리는 하루를 소개하고 시작과 끝 시간을 요청하고 있습니다. 시간은 특별하다거나 이런 루프가 아닌 경우
$hours= array(
'0' => true, '1' => true, '2' => true, '3' => true, '4' => true, '5' => true, '6' => true,
'7' => false, '8' => false, '9' => false, '10' => false, '11' => false, '12' => false, '13' => false,
'14' => false, '15' => false, '16' => false, '17' => false, '18' => false, '19' => false, '20' => false,
'21' => false, '22' => false, '23' => true
);
그래서, 기본적으로 내가 테스트 :
$normals = 0;
$specials = 0;
$hour_since = '23:00:00';
$hour_since_expl = explode(':',$hour_since);
$hour_to = '23:15:00';
$hour_to_expl= explode(':',$hour_to);
$date = $fecha = '2012-03-14';
$datetime_since= strtotime($date ." ".$hour_since);
$datetime_to= ((int) $hour_to_expl[0] > (int) $hour_to_expl[0]) ?
strtotime(date("Y-m-d h:i:s", strtotime($date ." ".$hour_to)) . " +1 day") :
strtotime($date." ".$hour_to);
$difference = $datetime_to - $datetime_since;
$hours_difference = $difference/SECONDS_PER_HOUR; //60*60
for ($i = 0; $i <= $difference; $i++){
$hour = $i + (int) $hour_since_expl [0];
if ($hours[$hour]) //Special hour here... Pay more!
$specials++;
else
$normals++;
}
그러나 문제 그래서, 나는이 같은 배열이있을 수 있다고 생각 시간이 정확하지 않고 22:30와 같이 시작하여 00:30을 끝내면 0,5 시간이 특별하지 않습니다. 나는 내 마음을 고민해 왔지만 어떤 해결책도 찾을 수 없다.
누군가에게 아이디어가 있습니까?
: 더 많은 코드가 제공됩니다.
PHP에 익숙하지 않아 다음과 같은 사항이 없으면 사면 해주십시오. 왜 그것을 반복합니까? 왜 초과 근무 기간과 정규 기간을 얻고 그 세율을 곱하면되지 않습니까? –
그리고 어떻게 할 수 있습니까? 그 기간을 어떻게 얻습니까? –
시작 시간이 15:15이고 종료 시간이 22:45라고 가정 해 봅시다. 먼저 시작 시간을 가장 가까운 HOUR 또는 그 이후 시간으로 변환하고 endtime을 가장 가까운 HOUR 시간으로 변환하십시오. 그래서 우리는 15시와 22시에 도착합니다. 이 시간 동안 루프를 사용하고 차이점을 다음과 같이 사용하십시오. 차이 시간 (15 : 15-15 : 00 또는 22 : 45-22 : 00)이 초과 근무 인 경우 초과 근무 * numMins/60 다른 경우 표준 * numMins/60. 나는 PHP에 익숙하지 않기 때문에 의사 코드로 이것을해야만한다. –