휴가시간 계산하는법?

휴가시간 계산하는법?

QA

휴가시간 계산하는법?

본문



안녕하세요?

휴가시간 계산하는 것이 생각보다 어렵네요.

하루 근무시간이 정상근무일 때 09시~18시이고, 점심시간 12시~13시간으로 하루 8시간 근무자일때

휴가시간을 계산하는 코드가 궁금합니다.

 

예시1)

휴가시작일:= "2023-04-16 15:00:00"

휴가종류일:= "2023-04-17 10:00:00"

일때는 휴가시간이 4시간이고

 

예시2)

휴가시작일:= "2023-04-16 16:00:00" ;<--- 2시간

휴가종류일:= "2023-04-17 14:00:00" ;<--- 4시간

일때는 휴가시간이 6시간입니다.

 

예시3)

휴가시작일:= "2023-04-16 10:00:00" ;<--- 6시간

휴가종류일:= "2023-04-17 10:00:00" ;<--- 1시간

일때는 휴가시간이 7시간입니다.

 

이를 만족하는 코드나 산식이 궁금합니다.



이 질문에 댓글 쓰기 :

답변 2

예시2 번을 제가 생각한 방식으로 구해봤습니다. 쿼리로 했습니다.

 

SELECT 
TIMESTAMPDIFF( MINUTE , date_format('2023-04-16 16:00:00', '%Y-%m-%d %H:%i:%S') 
   , date_format('2023-04-16 18:00:00', '%Y-%m-%d %H:%i:%S') )  
+
TIMESTAMPDIFF( MINUTE , date_format('2023-04-17 09:00:00', '%Y-%m-%d %H:%i:%S') 
   , date_format('2023-04-17 12:00:00', '%Y-%m-%d %H:%i:%S') )      
+
TIMESTAMPDIFF( MINUTE , date_format('2023-04-17 13:00:00', '%Y-%m-%d %H:%i:%S') 
   , date_format('2023-04-17 14:00:00', '%Y-%m-%d %H:%i:%S') )      
    FROM DUAL

 

MINUTE ==> 필요하시면 시간 단위로 변경하시던가 60(분)으로 나누시면 될 겁니다.

 

 

 

예시3에서 왜 6시간이죠?

어쨌든 질문의 코드

$start= "2023-04-16 09:00:00";

$end = "2023-04-17 18:00:00";

$start_time= substr($start , 11 , 2);

$end_time = substr($end , 11 , 2);

$rtime = 0;

if($start_time <= 12) $rtime = 1;

if($end_time >= 13) $rtime += 1;

$total = 18 - $start_time + $end_time - 9 - $rtime;

 

답변을 작성하시기 전에 로그인 해주세요.
전체 34
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT