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()의 반환값만을 이용하는 프로젝트가 있다면 사용할 수 있다고 본다.