Date 객체는 JavaScript 언어에 기본적으로 내장된 데이터 타입으로, 날짜와 시간을 처리할 때 사용됩니다. Date 객체는 아래와 같이 new Date() 생성자를 호출하여 생성할 수 있습니다.
Date 객체가 한 번 생성되면 다양한 내장 메서드를 통해 객체를 조작할 수 있습니다. 대부분의 메서드는 현지 시간(local time) 또는 UTC(협정 세계시, 그리니치 표준시) 기준으로 연도, 월, 일, 시, 분, 초, 밀리초 필드를 가져오거나 설정하는 역할을 담당합니다.
그중에서 getTimezoneOffset() 메서드는 현재 날짜의 현지 시간대와 UTC 사이의 시차를 분(minute) 단위로 반환합니다. 반환값은 'UTC 시간에서 현지 시간을 뺀 값'이므로, UTC보다 앞선 시간대(예: 한국, UTC+9)에서는 음수가 반환됩니다.
문법(Syntax)
getTimezoneOffset() 메서드의 기본 문법은 다음과 같습니다.
dateObj.getTimezoneOffset();
예제 1 – 기본 사용법
아래 예제는 특정 날짜로 Date 객체를 생성한 뒤, 해당 시점의 시간대 오프셋을 분 단위로 출력합니다.
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var dateObj = new Date('september 26, 89 12:4:25:96');
document.write(dateObj.getTimezoneOffset());
</script>
</body>
</html>
실행 결과
-330
결과가 -330인 이유는 실행 환경의 시간대가 UTC+5:30(예: 인도 표준시)이기 때문입니다. 오프셋은 'UTC − 현지 시간'으로 계산되므로, 현지 시간이 UTC보다 5시간 30분 빠르면 -330분이 반환됩니다. 참고로 한국(KST, UTC+9)에서 실행하면 -540이 출력됩니다.
예제 2 – 유효하지 않은 날짜의 경우(NaN)
한 달은 최대 31일까지만 존재하므로, 날짜 값은 반드시 1~31 사이여야 합니다. 이 범위를 벗어난 잘못된 날짜를 지정하면 유효하지 않은 Date 객체가 되며, 관련 메서드는 NaN(Not a Number)을 반환합니다.
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var dateObj = new Date('september 40, 89 12:4:25:96');
document.write(dateObj.getHours());
</script>
</body>
</html>
실행 결과
NaN
위 예제에서 'september 40'처럼 존재할 수 없는 날짜를 지정했기 때문에 Date 객체가 유효하지 않게 되고, 메서드 호출 결과로 NaN이 반환됩니다. 따라서 실무에서는 날짜 문자열의 유효성을 검증하거나, isNaN(dateObj.getTime())을 활용해 Invalid Date 여부를 먼저 확인하는 것이 좋습니다.