개발지식

Date와 관련된 이슈.

weaklion 2023. 11. 15. 18:16

최근 프로젝트에서 Date에 관련된 예기치 못한 에러들 때문에, 꽤나 골머리를 앓았습니다.

그러다 이번에 조금 정리도 할 겸 해서 블로그 글에다가 올려봅니다.

 

저희는 현재 타입스크립트를 사용하고 있고,  기본적으로 시간괴 관련된 계산을 할 때엔 Date 타입을 사용합니다.

하지만 과거 저의 무지(aka 공부를 안한)로 인해 Date를 String으로 계산하고 있었는데요.

그러다 보니 백엔드와 프론트엔드에서 시간을 맞출때에 꽤나 큰 난항이 있었습니다.

 

가령 프론트에서  '2023-10-15 15:30:00' 이런식으로 보내게 된다면, 백엔드에서는 저 string을 그대로 받아서 서버에 저장하고 있었습니다.

말이 안되죠? 이상적이라면 프론트에서도 시간과 관련된 데이터는 Date 타입으로 보내야만 하고, 백엔드에서도 Date 타입으로 받아야 합니다.

만약 프론트엔드가 post로 Date를 보낸다면 axios를 통해 자동으로 ISO로 인코딩 되어 보내기 때문에 백엔드에서는 그 값을 string으로 인식하기 쉽지만, 결론적으로는 Date 타입으로 받아야만 서로 간에 사이드 이펙트를 줄일 수 있습니다.

 

그리고 프론트에서 백엔드에 시간을 Date로 받는다면 isoString 인 값을 로컬 타임으로 바꿔주는 게 가장 좋겠죠. 국내 뿐만 아니라 해외에서 접속 하는 것도 감안한다면 kst가 아닌 로컬 타임으로 반환하는게 제일 안전합니다.