발단
클라이언트에게 특정 Date객체를 보내주려고 하는데, 처음에는 반환하려고 하는 결과 중 문자열에 해당 날짜를 보내려고 했다.
그런데 그렇게 문자열에 반환하면 파싱하기 불편할 수 있으니, SuccessData의 2번째 매개변수에는 문자열, 3번째 매개변수에는 반환할 특정 결과를 any타입으로 전송하고 있어서 2번째 매개변수에는 휴면 처리가 완료되었다고 보내고, 3번째 매개변수에 날짜를 담아서 구분하려고 했다.
그랬더니 다른 결과를 반환하는 시간이 다른 것을 확인하게 되었다.
과정
아래는 내가 시도한 과정이다.
const userDormantDate ~~~~
console.log( '@@@@@@@@@@',userDormantDate,`${userDormantDate}`);
return res.status(successCode.CREATED).json(
SuccessData(
successCode.CREATED,
`휴면 처리 완료되었습니다. ${userDormantDate}`,
userDormantDate,
),
);
@@@@@@@@@@ 2023-12-17T12:54:00.298Z Sun Dec 17 2023 21:54:00 GMT+0900 (대한민국 표준시)
내가 확인한 결과는 다음과 같다.
//처음 시도한 return data
{
statusCode: 201,
message: '휴면 처리 완료되었습니다. Sun Dec 17 2023 21:54:00 GMT+0900 (대한민국 표준시)',
},
//변경한 return data
{
statusCode: 201,
message: '휴면 처리 완료되었습니다.',
data: '2023-12-17T12:48:41.731Z',
},
message에 넣으면 '.' 기준으로 split을 하든 뭐 어려운건 아니긴 하지만 그래도 구분해서 보내주기 위해 data에 변수를 보냈더니 다른 값이 나왔다.
같은 userDormantDate라는 변수를 넣고 Date객체를 반환하는데 아예 다르게 확인이 되어서 왜 그런지 잠시 생각해보았다.
템플릿 리터럴은 변수를 문자열 안에 넣는 과정이라고 생각했다. 그런데 똑같은 변수인데 왜 다른 값이 나올까?
문자열 안에 같은 변수를 넣는 것은 맞다. 하지만 템플릿 리터럴을 통해 변수를 문자열에 넣고 나서 ${userDormantDate}는 해당 변수를 문자열로 변경하는 과정을 거친다. 즉, userDormantDate.toString() 으로 변환한다고 보면 된다.
JavaScript에서 Date를 String타입으로 바꾸는 메서드는 여러 가지가 있다.
- toString() : 날짜를 문자열로 변환한다.
- toUTCString() : UTC 기준으로 날짜를 문자열로 변환한다.
- toDateString() : 날짜를 영어권 기준의 형식의 문자열로 변환한다.
- toISOString() : 날짜를 표준 출력 형식의 문자열로 변환한다.
- toLocaleString() : 날짜를 해당 지역의 표기방법으로 변환한다.
결과
console.log('1: ', userDormantDate.toString());
console.log('2: ', userDormantDate.toUTCString());
console.log('3: ', userDormantDate.toDateString());
console.log('4: ', userDormantDate.toISOString());
console.log('5: ', userDormantDate.toLocaleDateString());
console.log('6: ', userDormantDate.toLocaleString());
toString()으로 문자열로 변경하면 프로그램이 돌아가는 timezone을 따라서 변경되기 때문에 한국시간으로 자동으로 변환해서 보여주고 있다.
'개발 > language' 카테고리의 다른 글
[JS] 파일 업로드 클릭시 반응이 없을 때.. feat.chrome (0) | 2023.12.02 |
---|---|
[JavaScript] const로 할당한 값이 바뀌는 이유 (0) | 2023.09.10 |
[TypeScript]타입 할당 ?, !의 차이에 대한 실제 사례 feat.JWT (0) | 2023.08.04 |