[javascript] Date객체 시간을 한국 시간으로 설정하기

자바스크립트의 Date객체가 표현하는 시간은 UTC 표준시간으로 한국(아시아/서울) 시간과는 9시간 차이가 납니다.

따라서 시간을 보정해서 한국 시간으로 설정해야 올바른 시간 표현이 가능합니다.

Date객체의 시간을 한국 시간으로 변경하는 방법은 여러가지 방법이 있습니다.

toLocaleString() 함수로 지역 시간으로 변경

toLocaleString() 함수는 지역 설정 값을 파라미터로 넣어서 시간을 지역 시간으로 변경할 수 있습니다. 한국 시간은 "Asia/Seoul" 입니다.

const locale = new Date().toLocaleString('en-US', { timeZone: 'Asia/Seoul' });
const today = new Date(locale);
console.log(today.toISOString());

toLocaleString() 함수는 선택한 지역의 시간을 포매팅해서 문자열로 반환합니다. Date객체를 반환하는 것이 아닙니다. 첫 번째 파라미터가 반환하는 문자열의 포맷이며 "en-US" 설정해야 합니다.

한글 포맷인 "ko-KR"로 설정하면 "오전/오후" 표현이 있는 문자열로 시간 표현이 되기 때문에 시간 문자열을 다시 Date 객체로 변경할 때 에러가 발생합니다.

9시간을 밀리세컨드로 더하기

let offset = 1000 * 60 * 60 * 9 // 9시간 밀리세컨트 값
let today = new Date(Date.now() + offset)

getTimezoneOffset() 함수로 UTC 표준 시간과 지역 시간과의 차이를 얻기

getTimezoneOffset() 함수는 현재 로케일(지역)과 UTC 표준시간과의 차이를 분으로 반환합니다. 음수로 반환하므로 연산을 할 때는 주의해야 합니다.

한국은 UTC 시간과 9시간 차이가 나므로 getTimezoneOffset() 함수는 -540을 반환합니다.

let offset = new Date().getTimezoneOffset() * 60000; // 9시간 밀리세컨드 값
let today = new Date(Date.now() - offset);

>> javascript Date() 현재 날짜, 오늘, 어제, 전월 말일 날짜 계산과 출력 포매팅

>> javascript Date() 전전달 말일, 다음달 말일, 다음주, 윤년, 만나이, 경과 날짜 수, 날짜 연산하기