Date.toISOString 오프셋 맞추기

최원빈·2022년 10월 17일
2

Date객체가 반환하는 날짜와 toISOString() 함수의 반환값은 다르다.

지금 글을 쓰는 시간 기준으로 콘솔창에 찍어보자,

정확히 9시간 차이가 난다.

toISOString함수는 UTC시간을 기준으로 반환하기 때문인데, 그 시간이 한국과 9시간차이의 오프셋을 갖기 때문이다.

UTC시간보다 9시간 더해진 시간이 한국 시간이기 때문에 그 차이를 뺄 필요가 있다.

내가 제작하는 프로젝트에서는 모든 시간을 toISOString이 반환하는 YYYY-MM-DD 형식의 문자열을 사용할 것이기 때문에 오프셋을 변경해야 할 필요가 있고, 이는 Date.prototype.getTimezoneOffset() 함수의 반환값을 통하여 가능하다.

// getTimezoneOffset()은 현재 시간과의 차이를 분 단위로 반환한다.
const offset = new Date().getTimezoneOffset() * 60000;

const today = new Date(Date.now() - offset);

분 단위로 반환하기 때문에 기존 밀리초 단위로 인자를 받는 new Date() 함수에 넣기 위해서 1000(밀리초)*60(초) 를 곱해 밀리초 단위로 만든다.

이후 현재 시간과의 차이만큼 빼어 시간을 설정하면 된다.

Date 객체의 시간은 지금과 다르겠지만, toISOString()의 반환값만을 이용하는 프로젝트가 있다면 사용할 수 있다고 본다.

profile
FrontEnd Developer

0개의 댓글