1. 파싱
기존에 글 상세 보기 페이지에서 날짜가 출력되도록 했는데 아래와 같이 나오고 있었다콘솔로 찍어보니 데이터 파싱이 잘못 된 것을 알 수 있었다.

오류가 발생한 이유

우선 콘솔로 db의 값 찍어보면 위와 같다.

파싱을 잘못 했음을 확인했다.
오류 해결
.slice 사용 시 (0,3) 이라면 0번째부터 시작해서 3-1번째까지 잘린다.
(n,m) 이라면 n부터 m-1까지!
slice 확실하게 짚고 넘어가자.
var a = 'the bird and the bee';
a.slice(0,3) //0번째부터 시작해서 3개 출력 0,1,2
//'the'
a.slice(0) //0번째부터 시작해서 출력 0 ~ end
//'the bird and the bee'
a.slice(4) //4번째 문자부터 시작해서 끝까지 출력 4번째 문자인 b ~ end
//'bird and the bee'
a.slice(-3) // 끝에서부터 시작해서 세 개 출력
//'bee'
var b = 'javascript'
b.slice(-1,3) // '' 로 출력됨. 불가능
''
b.slice(0,-1) //첫 번째 ~ 마지막문자 위치에서 -1 만큼 이동한 p 까지 출력
'javascrip'
Array.prototype.slice() - JavaScript | MDN
slice() 메서드는 어떤 배열의 begin 부터 end 까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환합니다. 원본 배열은 바뀌지 않습니다.
developer.mozilla.org
따라서 코드를 다음과 같이 수정했고 아래와 같이 표시된다.


2.
db 자체에는 시간이 한국 시간으로 표시가 되지만 이것을 프로젝트로 불러올 때는 9시간 늦게 표시가 된다. UTC 로 표시가 되는 듯 하다. 따라서 표시를 해 줄때 9시간 더해서 표시해주려고 했지만,
다시 생각해보니 시간에 9시간을 더하면 안 될 것 같고, 초로 변환해서 9시간만큼을 더하고, 년/월/일로 변환해야 할 것 같았다.

위와 같이 변경. 밀리초만큼 더해줬다.
Date.parse(data.date)/밀리초로 변환/
(.parse() 메서드는 날짜와 시간 문자열을 분석해서 utc 기준 밀리초 반환)
<map함수 안에서의 적용>

'React > 쇼핑몰 토이 프로젝트' 카테고리의 다른 글
| 두 가지 CSS 문제 해결 - display flex, 요소 가운데정렬 (0) | 2024.03.15 |
|---|---|
| tr, td 태그와 map 함수 사용 - map 올바르게 사용하기 (1) | 2024.03.15 |