JavaScript의 Date 객체는 운영체제의 시스템 시간을 기준으로 동작하기 때문에, 스크립트만으로 시스템의 실제 시간을 직접 변경할 수는 없습니다. 하지만 UTC(협정 세계시)를 기준으로 시간대 오프셋을 계산하면, 원하는 국가나 지역의 현재 시간을 손쉽게 구할 수 있습니다.
동작 원리
getTime(): 현재 시각을 밀리초 단위 타임스탬프로 가져옵니다.getTimezoneOffset(): 현지 시간과 UTC의 차이를 분(minute) 단위로 반환하므로, 60000을 곱해 밀리초로 변환합니다.- 여기에 목표 시간대의 오프셋(1시간 = 3600000밀리초)을 더해 새로운
Date객체를 생성합니다.
예제 코드
<!DOCTYPE html>
<html>
<body>
<script>
var date, offset, nd;
date = new Date();
document.write("Current: "+date);
utc = date.getTime() + (date.getTimezoneOffset() * 60000);
// 싱가포르는 GMT+8
offset = 8;
nd = new Date(utc + (3600000*offset));
document.write("<br>Singapore Time: "+nd.toLocaleString());
</script>
</body>
</html>실행 결과

참고: Intl.DateTimeFormat 활용하기
최신 브라우저에서는 위와 같이 오프셋을 직접 계산하지 않고도 Intl.DateTimeFormat 객체의 timeZone 옵션을 사용하면 더 간단하고 정확하게 특정 시간대의 시간을 표시할 수 있습니다.
new Intl.DateTimeFormat('ko-KR', {
timeZone: 'Asia/Singapore',
dateStyle: 'full',
timeStyle: 'medium'
}).format(new Date());일광절약시간(DST)까지 자동으로 처리되므로, 실무에서는 Intl.DateTimeFormat 사용을 권장합니다.