자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

어제 오늘 내일

IT/Javascript

[Javascript] 경과 시간 계산하기 (시간, 분, 초)

hi.anna 2020. 7. 27. 01:13

Javascript에서 시간을 표현하고, 시간을 다루는 여러가지 방법을 알아보고 있습니다.

[HTML] 날짜 입력 항목에 현재 시간을 기본값으로 세팅하기

[Javascript] 현재 날짜, 시간 구하기

[Javascript] Date 객체로 원하는 날짜, 시간 표현하기

[Javascript] 날짜 계산하기 (년/월/일 더하기, 빼기)

[Javascript] 월의 마지막 날짜 계산하기

[Javascript] 날짜 계산 (Date) 마지막 날짜(말일)/윤달/윤년 처리하기

[Javascript] 시간 계산하기 (시/분/초/ 더하기, 빼기)

이번에는 Javascript에서 주어진 두 시간 사이의 

경과 시간 (시간, 분, 초)를 계산하는 방법입니다.

경과 시간 계산하기 (시, 분, 초)

두 시간 사이의 차이를 구하기 위해서는

먼저 Date 객체의 getTime() 메소드를 이용해서 각각의 날짜의 시간에 해당하는 숫자를 구하고, 

그 차이를 계산하면 됩니다.

dateObj.getTime()

Date의 getTime() 메소드는 '1970년 1월1 일 00:00:00 UTC'로부터 주어진 시간 사이의 경과시간(밀리초)를 리턴합니다.

즉, '1970년 1월1 일 00:00:00 UTC'의 getTime() 값은 0입니다.

그리고, '1970년 1월 1일 00:00:01 UTC'의 getTime() 값은 1000입니다.

이를 이용해서 경과시간을 계산할 수 있습니다.

 경과 시간 / 분 / 초 계산 

See the Pen Date by anna (@hianna) on CodePen.

2020/7/1 0:0:0 ~ 2020/7/1 2:30:4 사이의 경과시간을 계산하고,

각 경과 시간을 초, 분, 시간 단위로 다시 환산하였습니다. 

 const elapsedMSec = date2.getTime() - date1.getTime(); 

두 시간(date1, date2)의 getTime() 값의 차는

두 시간 사이의 경과시간(밀리세컨드 단위)을 의미합니다.

 const elapsedSec = elapsedMSec / 1000; 

밀리세컨드(millisecond) 단위를 초단위(second)로 변환하기 위해 1000으로 나누어 주었습니다.

 const elapsedMin = elapsedMSec / 1000 / 60; 

밀리세컨드(millisecond) 단위의 경과 시간을 초단위(second)로 변환하기 위해 1000으로 나누어 주고,

이것을 분단위(minute)로 변환하기 위해 60으로 다시 나누어 주었습니다.

 const elapsedHour = elapsedMSec / 1000 / 60 / 60; 

밀리세컨드(millisecond) 단위의 경과 시간을 초단위(second)로 변환하기 위해 1000으로 나누어 주고,

이것을 분단위(minute)로 변환하기 위해 60으로 다시 나누어 주었습니다.

그리고, 시간단위(hour)로 변환하기 위해 다시 60으로 나누어 주었습니다.

See the Pen Date by anna (@hianna) on CodePen.

Date 객체의 연산을 할때는 getTime() 메소드를 사용하지 않고,

Date 객체끼리 연산을 해도 getTime() 메소드를 사용하여 연산한 것과 같은 결과를 얻을 수도 있습니다.

  • 자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

    시간계산

    계산할 두 시각을 정한다.

    var 시간1 = new Date("2019-09-03 12:00:00");
    var 시간2 = new Date("2019-09-03 14:23:32");

    두 시각의 간격을 변수 "간격"에 입력한다.

    var 간격 = 시간2 - 시간1;
    // 간격 의 값은 8612000(밀리초) 가 된다.

    간격 값의 시, 분, 초 값을 얻는다.

    var 시 = Math.floor((간격 % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var 분 = Math.floor((간격 % (1000 * 60 * 60)) / (1000 * 60));
    var 초 = Math.floor((간격 % (1000 * 60)) / 1000);

    console.log( 시 +"시간 "+ 분 +"분 "+ 초 +"초" );
    // 2시간 23분 32초

    날짜계산

    계산할 두 날짜의 차이를 얻어 변수 '날수'에 넣는다.

    var 날수 = new Date("2019-12-25") - new Date("2019-09-03");
    // 9763200000

    하루 24시간을 밀리초로 변환하면

    var 하루초 = 24 * 60 * 60 * 1000;
    // 86400000

    날짜 계산하기

    console.log("일수 차이 : "+ parseInt(날수 / 하루초) +" 일");
    console.log("월수 차이 : "+ parseInt(날수 / (하루초 * 30)) +" 월");
    console.log("년수 차이 : "+ parseInt(날수 / (하루초 * 30 * 12)) +" 년");
    // 일수 차이 : 113 일
    // 월수 차이 : 3 월
    // 년수 차이 : 0 년

자바스크립트 시간 계산하기 (시,분 더하기 빼기)

const date = new Date();

console.log(`date : ${date}`);

// 시간 더하기 빼기

date.setHours(date.getHours() + 1);

console.log(`시간 더하기 : ${date}`);

date.setHours(date.getHours() - 1);

console.log(`시간 빼기 : ${date}`);

// 분 더하기 빼기

date.setMinutes(date.getMinutes() + 10);

console.log(`분 더하기 : ${date}`);

date.setMinutes(date.getMinutes() - 10);

console.log(`분 빼기 : ${date}`);

출퇴근 기록표를 이용한 직원의 근무 시간 관리

직원들의 출퇴근시간을 기록하고 총 근무시간을 계산해주는 기능으로 근무현황을 관리할 수 있도록 도움을 드립니다.

1. 설정하기

먼저, 백오피스 설정->기능 섹션에서 출퇴근 기록 옵션을 활성화 해야 합니다.

자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

변경 사항은 '저장' 버튼을 눌러야만 저장이 되므로 잊지 말고 저장하세요.

출퇴근 기록은 PIN 코드 인증이 필요하므로 백오피스에서 PIN 코드를 설정해야 합니다.

2. POS에서 사용하기

PIN 코드 로그인 화면 우측 상단에 있는 '출퇴근 기록' 버튼(⏱) 을 누릅니다.

자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

PIN 코드를 입력하세요.

자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

그러면 '출근'과 '퇴근' 버튼이 활성화 되었음을 확인 할 수 있습니다.

자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

출근하는 경우, '출근' 버튼을 누릅니다.

자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

아래와 같이 출근시간이 기록됩니다.

자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

좌측 상단에 뒤로가기 버튼(←) 으로 PIN 코드 로그인 페이지로 돌아가거나, 'POS로 이동' 버튼을 눌러 판매 화면으로 갈 수도 있습니다.


퇴근하는 경우 마찬가지로 '출퇴근 기록' 페이지에서 '퇴근' 버튼을 누릅니다.

자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

아래와 같이 퇴근 시간이 기록됩니다.

자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

'OK' 버튼을 누르면 퇴근처리 후 PIN 코드 로그인 화면으로 돌아갑니다.

3. 백오피스에서 보고서 확인하기

출퇴근 기록 옵션을 활성화 하면, 직원 섹션에서 '출퇴근 기록표'와 '총 근무 시간'기능을 확인 할 수 있습니다.

자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

'총 근무 시간' 에서 근무시간을 일정기간, 매장, 직원별로 확인 할 수 있습니다.

자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan


'출퇴근 기록표' 에서는 출퇴근 시간목록을 확인할 수 있습니다.

자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

출퇴근 시간표를 수정하거나 새로 생성할 수 있으며, 출근 날짜와 시간, 퇴근 날짜와 시간에 따라 총 근무 시간이 계산됩니다.
참고사항! 총 근무 시간은 '분' 단위가 아닌 '시간' 단위로만 표시됩니다. 예) 1시간 30분 = 1.5시간

자바 스크립트 근무 시간 계산 - jaba seukeulibteu geunmu sigan gyesan

변경 사항은 '저장' 버튼을 눌러야만 저장이 되므로 잊지 말고 저장하세요.

관련 항목:

Loyverse POS에 직원 추가하는 방법

Loyverse POS에서 근무교대 관리하는 방법