관련해서 검색해보면 이런 제안이 많이 보인다.
const curr = new Date();
document.writeln("현재시간(Locale) : " + curr + '<br>');
// 2. UTC 시간 계산
const utc =
curr.getTime() +
(curr.getTimezoneOffset() * 60 * 1000);
// 3. UTC to KST (UTC + 9시간)
const KR_TIME_DIFF = 9 * 60 * 60 * 1000;
const kr_curr =
new Date(utc + (KR_TIME_DIFF));
document.writeln("한국시간 : " + kr_curr);
Date를 직접 가공해서 사용할 일이 없다면, 간단히 toLocaleString을 사용하는 것도 좋을 것 같다. 내부적으로는 어떤 방식에 의해서 동작하는지, 어떤 차이가 있는지는 들여다 보지 않았다.
new Date().toLocaleString('ko-KR');
하지만, Offset 값을 직접 할당하게 되면 직접 수정해야할 가능성이 있기에, 미래의 나에게 감사한 일을 만드는 바람직한 방법은 아니라는 의견이 있고, 이에 공감이 되었다.
써머 타임에 대한 분기 로직이 추가되어야할 수도 있으며, 선제적으로 GDPR 같은 정책을 시행한 유럽 같은 곳은 실제로 타임존을 바꿀 가능성도 있고 정보통신 분야 관련 공수는 개의치 않는 부분을 생각해보면, 꽤 충분한 이유가 될 수 있을 것 같다.