1. 문제
NextJS 토이프로젝트 진행 중, 날짜 데이터를 입력하고 Supabase에 저장했을 때, "2025-06-10"을 선택하고,
디버그를 통해 6월 10일 한국 시간 기준으로 저장되는 것도 확인하였지만,
Supabase DB에는 "2025-06-09T15:00:00.000Z"처럼 전날로 저장되는 현상이 발생
2. 원인
자바스크립트의 new Date()는 브라우저 로컬 시간(KST, GMT+9) 기준으로 날짜 객체를 생성하지만,
이를 JSON으로 전송하거나 Supabase에 저장할 때는 자동으로 UTC(세계 표준시)로 변환된다.
즉, "2025-06-10" → 2025-06-09T15:00:00Z로 변환되어 저장됨
한국은 UTC보다 +9시간이므로, 자정 기준으로 날짜를 선택하면 하루가 당겨지는 문제 발생
3. 해결
렌더링 시, 한국 날짜로 변환 후 렌더링 해주기
물론 supabase에 저장할 때 변환해서 저장해줘도 되지만, 그냥 프론트에서 가공하는걸로 했다.
en-CA로 한 이유는, 날짜는 동일하고 프로젝트에서 시간데이터는 안쓸거라서 사용했는데,
나중에 결국 ko-KR로 바꿔줬다.
const formattedDate = new Date(date).toLocaleDateString("en-CA");
프로젝트 할 때마다 느끼는건데, 시간 관련해서는 UTC 때문에 맨날 애먹이는 듯..
당연히 UTC 이슈인데 이런게 발생하면 맨날 찾아본다
오늘 이후로는 바로 생각날 수 있도록 기록하기
'[Study] 개발 공부 > [React] 리액트 공부' 카테고리의 다른 글
[프로젝트] TossPayments 간편결제 API 사용해보기 (0) | 2025.06.19 |
---|---|
[라이브러리] 짧은 고유 ID 생성해주는 nanoid (0) | 2025.06.10 |
react-loading-skeleton으로 스켈레톤 UI 만들기 (1) | 2025.05.14 |
[styled-components/React] styled-components: it looks like an unknown prop "X" is being sent through to the DOM... 경고 메시지 해결하기 (0) | 2025.03.27 |
[Redux] Redux Thunk를 왜 사용해야 할까 (0) | 2025.02.17 |