Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 두 타임스탬프 간의 시간 차이를 초 단위로 구하는 방법

두 타임스탬프 간의 시간 차이를 구하려면 아래 코드를 실행해 보세요. 이 예제에서는 두 날짜 객체의 차이를 밀리초 단위로 계산한 뒤, 이를 1000으로 나누어 초 단위 값으로 변환합니다. 그런 다음 해당 값을 활용해 두 타임스탬프 사이의 총 일수, 시간, 분, 초를 각각 구하는 방법을 살펴봅니다.

핵심 원리

JavaScript에서 Date 객체끼리 빼기 연산을 하면 두 시점 사이의 차이가 밀리초(ms) 단위 숫자로 반환됩니다. 따라서 Math.abs(date1 - date2) / 1000처럼 1000으로 나누면 초 단위의 시간 차이를 얻을 수 있습니다. 이후 다음과 같은 기준으로 변환합니다.

  • 1일 = 86400초
  • 1시간 = 3600초
  • 1분 = 60초

예제

<html>
   <head>
      <title>JavaScript Dates</title>
   </head>
   <body>
      <script>  
         var date1, date2;  

         date1 = new Date( "Jan 1, 2018 11:10:05" );
         document.write(""+date1);

         date2 = new Date( "Jan 1, 2018 08:15:10" );
         document.write("<br>"+date2);

         // 두 날짜의 차이를 밀리초로 구한 뒤 1000으로 나누어 초 단위로 변환
         var res = Math.abs(date1 - date2) / 1000;
         
         // 두 날짜 사이의 총 일수 구하기
         var days = Math.floor(res / 86400);
         document.write("<br>Difference (Days): "+days);                  
         
         // 시간 구하기
         var hours = Math.floor(res / 3600) % 24;          
         document.write("<br>Difference (Hours): "+hours);  
         
         // 분 구하기
         var minutes = Math.floor(res / 60) % 60;
         document.write("<br>Difference (Minutes): "+minutes);  
     
         // 초 구하기
         var seconds = res % 60;
         document.write("<br>Difference (Seconds): "+seconds);  
      </script>
   </body>
</html>

출력 결과

Mon Jan 01 2018 11:10:05 GMT+0530 (India Standard Time)
Mon Jan 01 2018 08:15:10 GMT+0530 (India Standard Time)
Difference (Days): 0
Difference (Hours): 2
Difference (Minutes): 54
Difference (Seconds): 55

코드 설명

Math.abs()를 사용하면 두 날짜의 순서와 관계없이 항상 양수인 시간 차이를 얻을 수 있습니다. Math.floor()는 나눗셈 결과에서 소수점 이하를 버려 정수 단위의 일, 시간, 분을 구할 때 사용되며, %(나머지 연산자)를 활용해 상위 단위를 제외한 나머지 값을 계산합니다.