JavaScript에서 두 날짜 사이의 초(second) 수를 구하려면 Math.abs() 메서드를 활용하면 됩니다.
두 Date 객체를 서로 빼면 밀리초(ms) 단위의 시간 차이가 계산되는데, 여기에 Math.abs()를 적용해 절댓값을 만들고 1000으로 나누면 초 단위 값으로 변환할 수 있습니다. 절댓값을 사용하기 때문에 어떤 날짜가 앞서든 상관없이 항상 양수인 차이 값을 얻을 수 있다는 장점이 있습니다.
예제
아래 코드를 실행하면 두 날짜 사이의 초 차이를 확인할 수 있습니다.
<html>
<head>
<title>JavaScript Get Seconds</title>
</head>
<body>
<script>
var date1, date2;
// 현재 날짜와 시간
date1 = new Date();
document.write("" + date1);
// 특정 날짜와 시간 지정
date2 = new Date("Dec 10, 2015 20:15:10");
document.write("<br>" + date2);
// 두 날짜 사이의 총 초(second) 계산
var seconds = Math.abs(date1 - date2) / 1000;
document.write("<br>Difference between 2 dates: " + seconds);
</script>
</body>
</html>실행 결과
Mon May 28 2018 09:35:25 GMT+0530 (India Standard Time) Thu Dec 10 2015 20:15:10 GMT+0530 (India Standard Time) Difference between 2 dates: 77721615.573
코드 설명
위 예제의 동작 원리는 다음과 같습니다.
new Date()는 현재 시점의 날짜와 시간을 담은 객체를 생성합니다.new Date("Dec 10, 2015 20:15:10")처럼 문자열을 전달하면 해당 시점의 Date 객체가 만들어집니다.- Date 객체끼리 뺄셈(
date1 - date2)을 하면 자동으로 밀리초 단위 숫자로 변환되어 차이가 계산됩니다. Math.abs()로 음수가 나오지 않도록 절댓값을 취한 뒤, 1000으로 나눠 밀리초를 초로 변환합니다.
만약 소수점 없이 정수 형태의 초가 필요하다면 Math.floor()나 Math.round()를 함께 사용하면 됩니다. 예를 들어 Math.floor(Math.abs(date1 - date2) / 1000)과 같이 작성하면 내림 처리된 정수 초 값을 얻을 수 있습니다.