최대 1 분 소요

JavaScript Date 객체를 자주 사용하는 ‘yyyy-MM-dd’ 포맷의 String 타입으로 변환 하고 싶다면 toISOString 함수를 이용하면 간편하다. toISOString 함수는 JS Date 객체를 ISO 형식 문자열로 반환한다.

1
2
3
4
5
    // Wed Aug 03 2022 10:46:22 GMT+0900 (GMT+09:00) 
    let startDate = new Date();
    
    // '2022-08-03T01:46:22.163Z'
    startDate.toISOString();

하지만 ISO String 치환은 기존 Date 객체의 시각을 강제로 UTC 표준 시각으로 변환시키기 때문에 내 Local PC 와 UTC 간의 시차를 적용해주는 과정이 필요하다. 이 때는 getTimezoneOffset 함수를 이용한다. 현재 로컬 타임존과 UTC 타임존의 시차를 UTC 시각 기준으로 환산하여 준다 (분 단위). 따라서 변환 할 Date 객체에 미리 시차만큼을 더해주면 깔끔하게 로컬 타임존 기준으로 String 을 얻어낼 수 있다.

1
2
3
4
5
6
7
8
    // UTC 와의 시차 (-540)
    let timeDiff = startDate.getTimezoneOffset();
    // 현재 시각에 차이를 미리 반영한다.
    startDate.setHours(startDate.getHours() - (timeDiff/60));
    // '2022-08-03T10:46:22.163Z'
    startDate.toISOString();
    // '2022-08-03'
    let startDateString = startDate.toISOString().split('T')[0];

함수로 간단하게 정리하면 다음과 같다.

1
2
3
4
5
6
7
8
9
    function getDateStirng() {
        
    	let nowDate = new Date();
    	let timeDiff = nowDate.getTimezoneOffset();
    	nowDate.setHours(nowDate.getHours() - (timeDiff/60));
    	let nowDateString = nowDate.toISOString().split('T')[0];
        
    	return nowDateString;
    }

References

카테고리:

업데이트: