DB의 날짜와 프론트의 날짜 다른(1일 더 차이나는) 오류 해결

2025. 3. 14. 01:23백엔드

 

문제

DB의 생일 날짜와 프론트의 렌더링되는 생일의 날짜가 다르게 나오고 있다.

프론트의 날짜가 계속 1일 더 빠르게 나오고 있는 것

 

원인

백엔드에서 Date 타입을 사용하면 버의 타임존(KST)을 기준으로 날짜가 저장된다. 하지만 자바스크립트에서는 기본적으로 UTC로 변환하여 처리하기 때문이다.

  1. 백엔드에서 2024-06-29 00:00:00 KST(한국 시간)으로 날짜가 전송된다.
  2. 프론트엔드에서 이를 받아 new Date() 로 변환하면 기본적으로 UTC 기준으로 해석되기 때문에 아래 과정이 진행된다.
  • KST(UTC+9) 기준 2024-06-29 00:00:00 KST → 2024-06-28 15:00:00 UTC
  • Date.toISOString()을 하면 2024-06-28T15:00:00.000Z가 출력된다.
  • 이를 YYYY-MM-DD로 포맷하면 2024-06-28로 표시된다.

 

해결

기존에는 생일의 변수 타입을 Date로 쓰고 있었는데 이걸 LocalDate로 바꿔주었다.

LocalDate는 시간 정보가 없기 때문에 타임존 변환 문제가 발생하지 않기 때문이다.